{"_id":"@cashmerelabs/cashmere-agent-sdk","name":"@cashmerelabs/cashmere-agent-sdk","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@cashmerelabs/cashmere-agent-sdk","version":"0.1.0","description":"Cashmere CCTP cross-chain USDC transfer SDK for EVM, Solana, Aptos, and Sui","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc","clean":"rm -rf dist","prepublishOnly":"npm run clean && npm run build"},"dependencies":{"viem":"^2.21.0","@solana/web3.js":"^1.95.0","@solana/spl-token":"^0.4.0","@coral-xyz/anchor":"^0.30.0","@aptos-labs/ts-sdk":"^1.33.0","@mysten/sui":"^1.16.0","bs58":"^6.0.0","zod":"^3.23.0"},"peerDependencies":{"@langchain/core":">=0.2.0"},"peerDependenciesMeta":{"@langchain/core":{"optional":true}},"devDependencies":{"@langchain/core":"^0.3.0","typescript":"^5.6.0"},"engines":{"node":">=18"},"license":"MIT","_id":"@cashmerelabs/cashmere-agent-sdk@0.1.0","gitHead":"e2813e4c1985a313fb3a66c49292218b87c403e4","_nodeVersion":"20.19.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-ymnY8rwAAeSiR9SDutIhPd8KD4KOBLeR6o0odsg4yLaGoOUdpruRTK+TPL5rbxfd4LBAnCfSNUjb2kXTe42D2Q==","shasum":"d5213ff297f1b553521dcd35b57593d20601e4bb","tarball":"https://registry.npmjs.org/@cashmerelabs/cashmere-agent-sdk/-/cashmere-agent-sdk-0.1.0.tgz","fileCount":38,"unpackedSize":179267,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDbQDrWjcvfzfvk4Adv0URqrX0OYHYY2PyjLwwnCepq5QIhAN/w2DmI0edOVUA6YI0UffORFMZB7GBQuH25MqBPsqCv"}]},"_npmUser":{"name":"cashmeregoat","email":"fust@cashmere.exchange"},"directories":{},"maintainers":[{"name":"cashmeregoat","email":"fust@cashmere.exchange"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cashmere-agent-sdk_0.1.0_1776640049797_0.8496088690841854"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-19T23:07:29.675Z","0.1.0":"2026-04-19T23:07:29.919Z","modified":"2026-04-19T23:07:30.083Z"},"maintainers":[{"name":"cashmeregoat","email":"fust@cashmere.exchange"}],"description":"Cashmere CCTP cross-chain USDC transfer SDK for EVM, Solana, Aptos, and Sui","license":"MIT","readme":"# @cashmerelabs/cashmere-agent-sdk\n\nTypeScript SDK for Cashmere CCTP cross-chain USDC transfers across EVM, Solana, Aptos, and Sui.\n\n## Install\n\n```bash\nnpm install @cashmerelabs/cashmere-agent-sdk\n```\n\n## AI Agent / OpenClaw Integration\n\nThis SDK ships with a `SKILL.md` file that AI agents (Cursor, Codex, OpenClaw,\nLangChain, etc.) can read to understand Cashmere CCTP capabilities. The skill\nfile is included in the npm package at `node_modules/@cashmerelabs/cashmere-agent-sdk/SKILL.md`.\n\nFor OpenClaw-based agents, register the SDK as a tool:\n\n```typescript\n// OpenClaw tool registration example\nimport { CashmereCCTP } from '@cashmerelabs/cashmere-agent-sdk';\nimport { readFileSync } from 'fs';\n\nconst skillContext = readFileSync(\n  require.resolve('@cashmerelabs/cashmere-agent-sdk/SKILL.md'), 'utf-8'\n);\n\nconst cctp = new CashmereCCTP({\n  evm: { privateKey: process.env.EVM_PRIVATE_KEY! },\n  solana: { privateKey: process.env.SOLANA_PRIVATE_KEY! },\n});\n\n// Expose cctp.transfer() as an agent tool with SKILL.md as context\n```\n\nThe SKILL.md provides:\n- All supported chains, domain IDs, and contract addresses\n- CCTP V1/V2 routing rules and fee structures\n- Per-chain transfer patterns (EVM, Solana, Aptos, Sui)\n- Gas API integration details\n\n## Quick Start\n\n```typescript\nimport { CashmereCCTP } from '@cashmerelabs/cashmere-agent-sdk';\n\nconst cctp = new CashmereCCTP({\n  evm: { privateKey: process.env.EVM_PRIVATE_KEY! },\n  solana: { privateKey: process.env.SOLANA_PRIVATE_KEY! },\n  aptos: { privateKey: process.env.APTOS_PRIVATE_KEY! },\n  sui: { privateKey: process.env.SUI_PRIVATE_KEY! },\n});\n\n// Ethereum -> Arbitrum, 100 USDC, V2 Fast\nconst result = await cctp.transfer({\n  from: 'ethereum',\n  to: 'arbitrum',\n  amount: '100',\n  recipient: '0xYourArbitrumAddress',\n  version: 'v2-fast',\n  feeMode: 'native',\n});\n\nconsole.log(result.txHash);\nconsole.log(result.explorerUrl);\n```\n\n## Configuration\n\nOnly configure the chains you need:\n\n```typescript\n// EVM-only bot\nconst cctp = new CashmereCCTP({\n  evm: { privateKey: process.env.EVM_KEY! },\n});\n\n// With custom RPC\nconst cctp = new CashmereCCTP({\n  evm: {\n    privateKey: process.env.EVM_KEY!,\n    rpcUrl: 'https://my-rpc.example.com',\n  },\n  solana: {\n    privateKey: process.env.SOL_KEY!,\n    rpcUrl: 'https://my-solana-rpc.example.com',\n  },\n});\n\n// Custom Gas API URL\nconst cctp = new CashmereCCTP({\n  evm: { privateKey: process.env.EVM_KEY! },\n  gasApiUrl: 'https://gas.cashmere.exchange',\n});\n```\n\n## Transfer Parameters\n\n```typescript\nawait cctp.transfer({\n  from: 'ethereum',        // source chain\n  to: 'arbitrum',          // destination chain\n  amount: '100',           // USDC amount (human-readable, 6 decimals applied automatically)\n  recipient: '0x...',      // destination address (any format per chain)\n  version: 'v2-fast',      // optional: 'v1' | 'v2-fast' | 'v2-norm' (auto-resolved if omitted)\n  feeMode: 'native',       // optional: 'native' | 'stable' (default: 'native')\n});\n```\n\n### Version Auto-Resolution\n\nIf `version` is omitted, the SDK picks the best available version:\n1. V2 Fast (if supported for the route)\n2. V2 Norm (if supported)\n3. V1 (fallback)\n\n### Solana Recipients\n\nFor Solana destinations, pass the wallet address (not the ATA). The SDK computes the USDC ATA automatically:\n\n```typescript\nawait cctp.transfer({\n  from: 'ethereum',\n  to: 'solana',\n  amount: '50',\n  recipient: 'SolanaWalletPublicKeyBase58',\n});\n```\n\n## Supported Routes\n\n| Source          | V1 | V2 Fast | V2 Norm | Destinations                    |\n|-----------------|----|---------|---------|---------------------------------|\n| Ethereum        | Y  | Y       | Y       | All EVM, Solana, Aptos, Sui     |\n| Arbitrum        | Y  | Y       | Y       | All EVM, Solana, Aptos, Sui     |\n| Base            | Y  | Y       | Y       | All EVM, Solana, Aptos, Sui     |\n| Optimism        | Y  | Y       | Y       | All EVM, Solana, Aptos, Sui     |\n| Unichain        | Y  | Y       | Y       | All EVM, Solana, Aptos, Sui     |\n| Polygon         | Y  | N       | Y       | All EVM, Solana, Aptos, Sui     |\n| Avalanche       | Y  | N       | Y       | All EVM, Solana, Aptos, Sui     |\n| Linea           | N  | Y       | Y       | EVM, Solana only                |\n| Worldchain      | N  | Y       | Y       | EVM, Solana only                |\n| Sei             | N  | N       | Y       | EVM, Solana only                |\n| Sonic           | N  | N       | Y       | EVM, Solana only                |\n| HyperEVM        | N  | N       | Y       | EVM, Solana only                |\n| Monad           | N  | N       | Y       | EVM, Solana only                |\n| Solana          | Y  | N       | Y       | All EVM, Aptos, Sui             |\n| Aptos           | Y  | N       | N       | Legacy EVM, Solana, Sui         |\n| Sui             | Y  | N       | N       | Legacy EVM, Solana, Aptos       |\n\n## Utilities\n\n```typescript\nimport {\n  CCTP_DOMAINS,\n  USDC_ADDRESSES,\n  isV1Supported,\n  isV2FastSupported,\n  resolveVersion,\n  GasApiClient,\n} from '@cashmerelabs/cashmere-agent-sdk';\n\n// Check route support\nisV1Supported('ethereum', 'arbitrum');     // true\nisV2FastSupported('polygon', 'base');      // false (polygon = V2 Norm only)\n\n// Resolve best version\nresolveVersion('ethereum', 'arbitrum');    // 'v2-fast'\nresolveVersion('aptos', 'sui');            // 'v1'\n\n// Direct Gas API access\nconst gas = new GasApiClient();\nconst sig = await gas.getEcdsaSignature(0, 3, true, false);\n```\n\n## Simulate (Preview Before Execute)\n\n```typescript\nconst sim = await cctp.simulate({\n  from: 'ethereum',\n  to: 'arbitrum',\n  amount: '100',\n});\n\nconsole.log(sim.supported);         // true\nconsole.log(sim.version);           // 'v2-fast'\nconsole.log(sim.estimatedDuration); // '~15 seconds'\nconsole.log(sim.estimatedFee);      // { cashmere: '...', circleBurnBps: 1.3 }\n\nif (sim.supported) {\n  await cctp.transfer({ from: 'ethereum', to: 'arbitrum', amount: '100', recipient: '0x...' });\n}\n```\n\n## Agent Framework Integration\n\n### OpenAI Assistants / Function Calling\n\n```typescript\nimport { bridgeToolSchema, simulateToolSchema } from '@cashmerelabs/cashmere-agent-sdk';\n\nconst tools = [\n  { type: \"function\", function: bridgeToolSchema },\n  { type: \"function\", function: simulateToolSchema },\n];\n\n// Pass to OpenAI chat completion\nconst response = await openai.chat.completions.create({\n  model: \"gpt-4\",\n  messages: [...],\n  tools,\n});\n```\n\n### LangChain\n\n```typescript\nimport { CashmereCCTP } from '@cashmerelabs/cashmere-agent-sdk';\nimport { CashmereBridgeTool, CashmereSimulateTool } from '@cashmerelabs/cashmere-agent-sdk/tools/langchain';\n\nconst cctp = new CashmereCCTP({ evm: { privateKey: process.env.EVM_KEY! } });\nconst tools = [\n  new CashmereBridgeTool(cctp),\n  new CashmereSimulateTool(cctp),\n];\n\n// Use with any LangChain agent\nconst agent = createReactAgent({ llm, tools });\n```\n\n### crewAI\n\ncrewAI uses LangChain tools natively -- same `CashmereBridgeTool` and `CashmereSimulateTool` classes work directly.\n\n## How It Works\n\n1. SDK builds and signs a source-chain transaction (burn USDC via Cashmere wrapper)\n2. Cashmere's own relayers automatically detect the burn, fetch Circle attestation, and mint USDC on the destination chain\n3. No further action needed -- the destination transfer completes automatically\n\n## Security\n\n- Private keys are only used in-memory for transaction signing\n- Never stored, logged, or transmitted anywhere except to the chain RPC\n- The Gas API (`gas.cashmere.exchange`) only receives domain/fee parameters, never keys\n- All contract addresses are public on-chain data\n\n## Build\n\n```bash\nnpm run build\n```\n","readmeFilename":"README.md","_rev":"1-7e33b23cde9488f249ddc5d73173d7b0"}