[{"data":1,"prerenderedAt":4778},["ShallowReactive",2],{"navigation_docs":3,"-guides-crypto-vesting":315,"-guides-crypto-vesting-surround":4773},[4,30,87,208,252],{"title":5,"path":6,"stem":7,"children":8,"page":29},"Getting Started","\u002Fgetting-started","1.getting-started",[9,14,19,24],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction","i-lucide-rocket",{"title":15,"path":16,"stem":17,"icon":18},"API","\u002Fgetting-started\u002Fapi-docs","1.getting-started\u002F2.api-docs","i-lucide-book-open-text",{"title":20,"path":21,"stem":22,"icon":23},"MCP","\u002Fgetting-started\u002Fmcp","1.getting-started\u002F3.mcp","i-lucide-bot",{"title":25,"path":26,"stem":27,"icon":28},"Smart Contract","\u002Fgetting-started\u002Fcontracts","1.getting-started\u002F5.contracts","i-lucide-clock",false,{"title":31,"path":32,"stem":33,"children":34,"page":29},"Guides","\u002Fguides","2.guides",[35,72,82],{"title":36,"path":37,"stem":38,"children":39,"page":29},"Crypto","\u002Fguides\u002Fcrypto","2.guides\u002F1.crypto",[40,45,50,55,59,64,68],{"title":41,"path":42,"stem":43,"icon":44},"Belong CheckIn","\u002Fguides\u002Fcrypto\u002Fcheckin","2.guides\u002F1.crypto\u002FcheckIn","i-lucide-map-pin",{"title":46,"path":47,"stem":48,"icon":49},"EVM NFT Minting","\u002Fguides\u002Fcrypto\u002Fminting","2.guides\u002F1.crypto\u002Fminting","i-lucide-box",{"title":51,"path":52,"stem":53,"icon":54},"Sponsored Gas","\u002Fguides\u002Fcrypto\u002Fsponsorship","2.guides\u002F1.crypto\u002Fsponsorship","i-lucide-wallet",{"title":56,"path":57,"stem":58,"icon":49},"LONG Staking","\u002Fguides\u002Fcrypto\u002Fstaking","2.guides\u002F1.crypto\u002Fstaking",{"title":60,"path":61,"stem":62,"icon":63},"Starknet NFT Minting","\u002Fguides\u002Fcrypto\u002Fstarknet","2.guides\u002F1.crypto\u002Fstarknet","i-lucide-circuit-board",{"title":65,"path":66,"stem":67,"icon":49},"Sui NFT Minting","\u002Fguides\u002Fcrypto\u002Fsui","2.guides\u002F1.crypto\u002Fsui",{"title":69,"path":70,"stem":71,"icon":28},"LONG Vesting","\u002Fguides\u002Fcrypto\u002Fvesting","2.guides\u002F1.crypto\u002Fvesting",{"title":73,"path":74,"stem":75,"children":76,"page":29},"Media","\u002Fguides\u002Fmedia","2.guides\u002F2.media",[77],{"title":78,"path":79,"stem":80,"icon":81},"Media Upload","\u002Fguides\u002Fmedia\u002Fcollection","2.guides\u002F2.media\u002Fcollection","i-lucide-image",{"title":83,"path":84,"stem":85,"icon":86},"Whitelabel","\u002Fguides\u002Fwhitelabel","2.guides\u002F5.whitelabel","i-lucide-badge-check",{"title":41,"path":88,"stem":89,"children":90},"\u002Fbelong-checkin","3.belong-checkin",[91,94,99,104,109,114,118,123,127,132,137,171,175,180,185,189,194,199,203],{"title":92,"path":88,"stem":93,"icon":44},"Overview","3.belong-checkin\u002Findex",{"title":95,"path":96,"stem":97,"icon":98},"App Features","\u002Fbelong-checkin\u002Fapp-features","3.belong-checkin\u002F1.app-features","i-lucide-list-checks",{"title":100,"path":101,"stem":102,"icon":103},"Telegram Bot","\u002Fbelong-checkin\u002Ftelegram-bot","3.belong-checkin\u002F10.telegram-bot","i-lucide-send",{"title":105,"path":106,"stem":107,"icon":108},"Apple Wallet","\u002Fbelong-checkin\u002Fapple-wallet","3.belong-checkin\u002F11.apple-wallet","i-lucide-ticket",{"title":110,"path":111,"stem":112,"icon":113},"Payments","\u002Fbelong-checkin\u002Fpayments-and-onramp","3.belong-checkin\u002F12.payments-and-onramp","i-lucide-credit-card",{"title":51,"path":115,"stem":116,"icon":117},"\u002Fbelong-checkin\u002Fsponsored-gas","3.belong-checkin\u002F13.sponsored-gas","i-lucide-fuel",{"title":119,"path":120,"stem":121,"icon":122},"Fees & Staking","\u002Fbelong-checkin\u002Ffees-and-staking","3.belong-checkin\u002F14.fees-and-staking","i-lucide-percent",{"title":124,"path":125,"stem":126,"icon":23},"Connect AI Deploy","\u002Fbelong-checkin\u002Fconnect-ai-deploy","3.belong-checkin\u002F15.connect-ai-deploy",{"title":128,"path":129,"stem":130,"icon":131},"QR Signage Examples","\u002Fbelong-checkin\u002Fvenue-qr-signage-examples","3.belong-checkin\u002F16.venue-qr-signage-examples","i-lucide-qr-code",{"title":133,"path":134,"stem":135,"icon":136},"Whitepaper","\u002Fbelong-checkin\u002Fwhitepaper","3.belong-checkin\u002F18.whitepaper","i-lucide-file-text",{"title":138,"icon":139,"path":140,"stem":141,"children":142,"page":29},"Developer","i-lucide-code","\u002Fbelong-checkin\u002Fdeveloper","3.belong-checkin\u002F19.developer",[143,148,152,156,161,166],{"title":144,"path":145,"stem":146,"icon":147},"Integration Overview","\u002Fbelong-checkin\u002Fdeveloper\u002Fintegration-overview","3.belong-checkin\u002F19.developer\u002F1.integration-overview","i-lucide-plug",{"title":149,"path":150,"stem":151,"icon":18},"API Reference","\u002Fbelong-checkin\u002Fdeveloper\u002Fapi-reference","3.belong-checkin\u002F19.developer\u002F2.api-reference",{"title":153,"path":154,"stem":155,"icon":23},"MCP Tools","\u002Fbelong-checkin\u002Fdeveloper\u002Fmcp-tools","3.belong-checkin\u002F19.developer\u002F3.mcp-tools",{"title":157,"path":158,"stem":159,"icon":160},"Networks","\u002Fbelong-checkin\u002Fdeveloper\u002Fnetworks","3.belong-checkin\u002F19.developer\u002F4.networks","i-lucide-network",{"title":162,"path":163,"stem":164,"icon":165},"Enterprise Apps","\u002Fbelong-checkin\u002Fdeveloper\u002Fenterprise-whitelabel","3.belong-checkin\u002F19.developer\u002F5.enterprise-whitelabel","i-lucide-package",{"title":167,"path":168,"stem":169,"icon":170},"POS & Events","\u002Fbelong-checkin\u002Fdeveloper\u002Fwebhooks-and-pos","3.belong-checkin\u002F19.developer\u002F6.webhooks-and-pos","i-lucide-receipt",{"title":172,"path":173,"stem":174,"icon":131},"Check-In Modes","\u002Fbelong-checkin\u002Fcheck-in-modes","3.belong-checkin\u002F2.check-in-modes",{"title":176,"path":177,"stem":178,"icon":179},"Venue Quick Start","\u002Fbelong-checkin\u002Fvenue-quickstart","3.belong-checkin\u002F3.venue-quickstart","i-lucide-store",{"title":181,"path":182,"stem":183,"icon":184},"Customer Rewards","\u002Fbelong-checkin\u002Fcustomer_rewards_guide","3.belong-checkin\u002F4.customer_rewards_guide","i-lucide-gift",{"title":186,"path":187,"stem":188,"icon":54},"Promoter Earnings","\u002Fbelong-checkin\u002Fpromoter-earnings-guide","3.belong-checkin\u002F5.promoter-earnings-guide",{"title":190,"path":191,"stem":192,"icon":193},"Venue Partner","\u002Fbelong-checkin\u002Fvenue-partner","3.belong-checkin\u002F6.venue-partner","i-lucide-building",{"title":195,"path":196,"stem":197,"icon":198},"Event Creation","\u002Fbelong-checkin\u002Fevent-creation","3.belong-checkin\u002F7.event-creation","i-lucide-calendar-plus",{"title":200,"path":201,"stem":202,"icon":54},"Wallet & Sign-In","\u002Fbelong-checkin\u002Fwallet-and-auth","3.belong-checkin\u002F8.wallet-and-auth",{"title":204,"path":205,"stem":206,"icon":207},"AI & Voice","\u002Fbelong-checkin\u002Fai-and-voice","3.belong-checkin\u002F9.ai-and-voice","i-lucide-mic",{"title":209,"path":210,"stem":211,"children":212,"page":29},"MCP Cheat Sheet","\u002Fmcp","4.mcp",[213,216,220,224,228,232,236,240,244,248],{"title":92,"path":214,"stem":215,"icon":23},"\u002Fmcp\u002Foverview","4.mcp\u002Foverview",{"title":217,"path":218,"stem":219,"icon":23},"Addresses","\u002Fmcp\u002Ftools-addresses","4.mcp\u002Ftools-addresses",{"title":221,"path":222,"stem":223,"icon":23},"CheckIn","\u002Fmcp\u002Ftools-check-in","4.mcp\u002Ftools-check-In",{"title":225,"path":226,"stem":227,"icon":23},"Events","\u002Fmcp\u002Ftools-events","4.mcp\u002Ftools-events",{"title":229,"path":230,"stem":231,"icon":23},"Hubs","\u002Fmcp\u002Ftools-hubs","4.mcp\u002Ftools-hubs",{"title":233,"path":234,"stem":235,"icon":49},"Minting","\u002Fmcp\u002Ftools-minting","4.mcp\u002Ftools-minting",{"title":237,"path":238,"stem":239,"icon":23},"Notes","\u002Fmcp\u002Ftools-notes","4.mcp\u002Ftools-notes",{"title":241,"path":242,"stem":243,"icon":23},"Registration","\u002Fmcp\u002Ftools-registration","4.mcp\u002Ftools-registration",{"title":245,"path":246,"stem":247,"icon":23},"Starknet","\u002Fmcp\u002Ftools-starknet","4.mcp\u002Ftools-starknet",{"title":249,"path":250,"stem":251,"icon":28},"Vesting","\u002Fmcp\u002Ftools-vesting","4.mcp\u002Ftools-vesting",{"title":253,"icon":13,"path":254,"stem":255,"children":256,"page":29},"Belong AI Deploy","\u002Fai-deploy","5.ai-deploy",[257,260,265,270,275,295,300,305,310],{"title":92,"path":258,"stem":259,"icon":13},"\u002Fai-deploy\u002Foverview","5.ai-deploy\u002F1.overview",{"title":261,"path":262,"stem":263,"icon":264},"Quick Start","\u002Fai-deploy\u002Fquickstart","5.ai-deploy\u002F2.quickstart","i-lucide-zap",{"title":266,"path":267,"stem":268,"icon":269},"Cloud Providers","\u002Fai-deploy\u002Fcloud-providers","5.ai-deploy\u002F3.cloud-providers","i-lucide-cloud",{"title":271,"path":272,"stem":273,"icon":274},"AI Providers","\u002Fai-deploy\u002Fai-providers","5.ai-deploy\u002F4.ai-providers","i-lucide-brain",{"title":276,"icon":277,"path":278,"stem":279,"children":280,"page":29},"Channels","i-lucide-messages-square","\u002Fai-deploy\u002Fchannels","5.ai-deploy\u002F5.channels",[281,285,290],{"title":282,"path":283,"stem":284,"icon":103},"Telegram","\u002Fai-deploy\u002Fchannels\u002Ftelegram","5.ai-deploy\u002F5.channels\u002F1.telegram",{"title":286,"path":287,"stem":288,"icon":289},"WhatsApp","\u002Fai-deploy\u002Fchannels\u002Fwhatsapp","5.ai-deploy\u002F5.channels\u002F2.whatsapp","i-lucide-message-circle",{"title":291,"path":292,"stem":293,"icon":294},"Slack","\u002Fai-deploy\u002Fchannels\u002Fslack","5.ai-deploy\u002F5.channels\u002F3.slack","i-lucide-hash",{"title":296,"path":297,"stem":298,"icon":299},"Private Access","\u002Fai-deploy\u002Fprivate-access","5.ai-deploy\u002F6.private-access","i-lucide-shield",{"title":301,"path":302,"stem":303,"icon":304},"Troubleshooting","\u002Fai-deploy\u002Ftroubleshooting","5.ai-deploy\u002F7.troubleshooting","i-lucide-wrench",{"title":306,"path":307,"stem":308,"icon":309},"Enterprise & API","\u002Fai-deploy\u002Fenterprise-api","5.ai-deploy\u002F8.enterprise-api","i-lucide-server-cog",{"title":311,"path":312,"stem":313,"icon":314},"OVHcloud","\u002Fai-deploy\u002Fovhcloud","5.ai-deploy\u002F9.ovhcloud","i-lucide-cloud-cog",{"id":316,"title":317,"body":318,"description":4766,"extension":4767,"links":4768,"meta":4769,"navigation":4770,"path":70,"seo":4771,"stem":71,"__hash__":4772},"docs\u002F2.guides\u002F1.crypto\u002Fvesting.md","Vesting Guide",{"type":319,"value":320,"toc":4748},"minimark",[321,325,329,341,374,377,381,397,399,402,407,415,424,429,452,457,659,664,961,982,984,988,991,995,1006,1011,1027,1032,1482,1486,1494,1503,1507,1527,1531,1849,1853,1858,3321,3385,3390,3616,3621,3991,3995,4299,4303,4306,4359,4363,4367,4436,4440,4572,4576,4744],[322,323,92],"h2",{"id":324},"overview",[326,327,328],"p",{},"This guide provides instructions for deploying and managing vesting contracts for LONG tokens on EVM-compatible blockchains (e.g., BSC, Ethereum, Polygon) using MCP (Model Context Protocol) tools. The process involves deploying a vesting wallet with customizable schedules (cliff, TGE, and linear vesting) and releasing vested tokens.",[326,330,331,335,336,340],{},[332,333,334],"strong",{},"Important:"," The ",[337,338,339],"code",{},"deploy-vesting-wallet"," tool returns transaction parameters that must be executed on the frontend. The user's wallet must have sufficient LONG tokens and approve the factory contract before deployment.",[342,343,344,349],"blockquote",{},[326,345,346],{},[332,347,348],{},"📋 Prerequisites:",[350,351,352,361,368],"ul",{},[353,354,355,356,360],"li",{},"Ensure ",[357,358,359],"a",{"href":21},"MCP integration"," is set up with your API key",[353,362,363,364,367],{},"User wallet must have sufficient LONG tokens (at least ",[337,365,366],{},"totalAllocation",")",[353,369,370,371,373],{},"User wallet must approve the factory contract for ",[337,372,366],{}," amount",[375,376],"hr",{},[322,378,380],{"id":379},"process-flow","Process Flow",[382,383,384,387],"mermaid",{},[326,385,386],{},"flowchart TD;",[388,389,394],"pre",{"className":390,"code":392,"language":393},[391],"language-text","A[Start: User Authentication] --> B[Get Deployment Parameters\u003Cbr\u002F>from Backend via MCP]\nB --> C[Check LONG Token Balance]\nC --> D{Has Enough\u003Cbr\u002F>Tokens?}\nD -->|No| E[Error: NotEnoughFundsToVest]\nD -->|Yes| F[Approve Factory Contract]\nF --> G[Execute Transaction\u003Cbr\u002F>on Frontend]\nG --> H[Deploy Vesting Wallet]\nH --> I{Configuration\u003Cbr\u002F>Finalized?}\nI -->|No| J[Add Tranches if needed]\nJ --> K[Finalize Configuration\u003Cbr\u002F>Owner Only]\nK --> L{Allocation\u003Cbr\u002F>Balanced?}\nL -->|No| M[Error: AllocationNotBalanced]\nL -->|Yes| N[Release Vested Tokens]\nI -->|Yes| N\nN --> O[End: Tokens Released]\n\nstyle A fill:#e1f5fe\nstyle O fill:#c8e6c9\nstyle F fill:#fff3e0\nstyle K fill:#ffeb3b\nstyle E fill:#f44336\nstyle M fill:#f44336\n","text",[337,395,392],{"__ignoreMap":396},"",[375,398],{},[322,400,153],{"id":401},"mcp-tools",[403,404,406],"h3",{"id":405},"_1-deploy-vesting-wallet","1. Deploy Vesting Wallet",[326,408,409,412,413],{},[332,410,411],{},"Tool:"," ",[337,414,339],{},[326,416,417,420,423],{},[332,418,419],{},"Description:",[421,422],"br",{},"\nReturns transaction parameters for deploying a time-locked vesting contract for LONG tokens. The transaction must be executed on the frontend by the user's wallet. The user must have sufficient LONG tokens and approve the factory contract before calling this tool.",[326,425,426],{},[332,427,428],{},"Important Requirements:",[350,430,431,441,446,449],{},[353,432,433,434,437,438,440],{},"User's wallet (",[337,435,436],{},"walletAddress",") must have at least ",[337,439,366],{}," LONG tokens",[353,442,443,444,373],{},"User's wallet must approve the factory contract for ",[337,445,366],{},[353,447,448],{},"The transaction is executed on the frontend, not by the backend",[353,450,451],{},"Backend only provides the signature and transaction parameters",[326,453,454],{},[332,455,456],{},"Input:",[388,458,462],{"className":459,"code":460,"language":461,"meta":396,"style":396},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  vestingWalletInfo: {\n    startTimestamp: number,           \u002F\u002F Start time of vesting (Unix timestamp)\n    cliffDurationSeconds: number,     \u002F\u002F Cliff period duration in seconds\n    durationSeconds: number,          \u002F\u002F Total vesting duration in seconds\n    beneficiary: string,              \u002F\u002F Address receiving vested tokens\n    totalAllocation: number,          \u002F\u002F Total tokens to vest (human-readable format, e.g., 2 for 2 tokens)\n    tgeAmount: number,                \u002F\u002F Tokens released at TGE (human-readable format, e.g., 0.5)\n    linearAllocation: number,         \u002F\u002F Tokens released linearly (human-readable format, e.g., 1.5)\n    description: string,              \u002F\u002F Description of vesting contract\n    \u002F\u002F Note: token address is automatically resolved from LONG token on the specified chain\n  },\n  chainId: number,                    \u002F\u002F EVM chain ID\n  walletAddress: string,               \u002F\u002F User's wallet address (will be owner and msg.sender)\n}\n","typescript",[337,463,464,473,486,505,520,535,551,566,581,596,611,617,623,638,653],{"__ignoreMap":396},[465,466,469],"span",{"class":467,"line":468},"line",1,[465,470,472],{"class":471},"sMK4o","{\n",[465,474,476,480,483],{"class":467,"line":475},2,[465,477,479],{"class":478},"sBMFI","  vestingWalletInfo",[465,481,482],{"class":471},":",[465,484,485],{"class":471}," {\n",[465,487,489,492,494,498,501],{"class":467,"line":488},3,[465,490,491],{"class":478},"    startTimestamp",[465,493,482],{"class":471},[465,495,497],{"class":496},"sTEyZ"," number",[465,499,500],{"class":471},",",[465,502,504],{"class":503},"sHwdD","           \u002F\u002F Start time of vesting (Unix timestamp)\n",[465,506,508,511,513,515,517],{"class":467,"line":507},4,[465,509,510],{"class":478},"    cliffDurationSeconds",[465,512,482],{"class":471},[465,514,497],{"class":496},[465,516,500],{"class":471},[465,518,519],{"class":503},"     \u002F\u002F Cliff period duration in seconds\n",[465,521,523,526,528,530,532],{"class":467,"line":522},5,[465,524,525],{"class":478},"    durationSeconds",[465,527,482],{"class":471},[465,529,497],{"class":496},[465,531,500],{"class":471},[465,533,534],{"class":503},"          \u002F\u002F Total vesting duration in seconds\n",[465,536,538,541,543,546,548],{"class":467,"line":537},6,[465,539,540],{"class":478},"    beneficiary",[465,542,482],{"class":471},[465,544,545],{"class":496}," string",[465,547,500],{"class":471},[465,549,550],{"class":503},"              \u002F\u002F Address receiving vested tokens\n",[465,552,554,557,559,561,563],{"class":467,"line":553},7,[465,555,556],{"class":478},"    totalAllocation",[465,558,482],{"class":471},[465,560,497],{"class":496},[465,562,500],{"class":471},[465,564,565],{"class":503},"          \u002F\u002F Total tokens to vest (human-readable format, e.g., 2 for 2 tokens)\n",[465,567,569,572,574,576,578],{"class":467,"line":568},8,[465,570,571],{"class":478},"    tgeAmount",[465,573,482],{"class":471},[465,575,497],{"class":496},[465,577,500],{"class":471},[465,579,580],{"class":503},"                \u002F\u002F Tokens released at TGE (human-readable format, e.g., 0.5)\n",[465,582,584,587,589,591,593],{"class":467,"line":583},9,[465,585,586],{"class":478},"    linearAllocation",[465,588,482],{"class":471},[465,590,497],{"class":496},[465,592,500],{"class":471},[465,594,595],{"class":503},"         \u002F\u002F Tokens released linearly (human-readable format, e.g., 1.5)\n",[465,597,599,602,604,606,608],{"class":467,"line":598},10,[465,600,601],{"class":478},"    description",[465,603,482],{"class":471},[465,605,545],{"class":496},[465,607,500],{"class":471},[465,609,610],{"class":503},"              \u002F\u002F Description of vesting contract\n",[465,612,614],{"class":467,"line":613},11,[465,615,616],{"class":503},"    \u002F\u002F Note: token address is automatically resolved from LONG token on the specified chain\n",[465,618,620],{"class":467,"line":619},12,[465,621,622],{"class":471},"  },\n",[465,624,626,629,631,633,635],{"class":467,"line":625},13,[465,627,628],{"class":478},"  chainId",[465,630,482],{"class":471},[465,632,497],{"class":496},[465,634,500],{"class":471},[465,636,637],{"class":503},"                    \u002F\u002F EVM chain ID\n",[465,639,641,644,646,648,650],{"class":467,"line":640},14,[465,642,643],{"class":478},"  walletAddress",[465,645,482],{"class":471},[465,647,545],{"class":496},[465,649,500],{"class":471},[465,651,652],{"class":503},"               \u002F\u002F User's wallet address (will be owner and msg.sender)\n",[465,654,656],{"class":467,"line":655},15,[465,657,658],{"class":471},"}\n",[326,660,661],{},[332,662,663],{},"Output:",[388,665,669],{"className":666,"code":667,"language":668,"meta":396,"style":396},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  address: string,                    \u002F\u002F Factory contract address\n  address_token: string,             \u002F\u002F LONG token address\n  method: object,                    \u002F\u002F ABI method details for deployVestingWallet\n  params: [                          \u002F\u002F Transaction parameters\n    string,                          \u002F\u002F walletAddress (owner)\n    {\n      startTimestamp: string,       \u002F\u002F Start timestamp (BigInt as string)\n      cliffDurationSeconds: string,  \u002F\u002F Cliff duration (BigInt as string)\n      durationSeconds: string,      \u002F\u002F Duration (BigInt as string)\n      token: string,                 \u002F\u002F Token address\n      beneficiary: string,           \u002F\u002F Beneficiary address\n      totalAllocation: string,       \u002F\u002F Total allocation (BigInt as string, in wei)\n      tgeAmount: string,             \u002F\u002F TGE amount (BigInt as string, in wei)\n      linearAllocation: string,      \u002F\u002F Linear allocation (BigInt as string, in wei)\n      description: string,          \u002F\u002F Description\n    },\n    {\n      nonce: string,                 \u002F\u002F Signature nonce (BigInt as string)\n      deadline: string,              \u002F\u002F Signature deadline (BigInt as string)\n      signature: string,             \u002F\u002F Backend signature (hex string)\n    }\n  ],\n  totalAllocationApprove: string,    \u002F\u002F Total allocation in wei (for approve check)\n}\n","json",[337,670,671,675,689,703,718,731,741,746,760,774,788,802,816,830,844,858,873,879,884,899,914,929,935,941,956],{"__ignoreMap":396},[465,672,673],{"class":467,"line":468},[465,674,472],{"class":471},[465,676,677,680,682,684,686],{"class":467,"line":475},[465,678,679],{"class":496},"  address",[465,681,482],{"class":471},[465,683,545],{"class":496},[465,685,500],{"class":471},[465,687,688],{"class":503},"                    \u002F\u002F Factory contract address\n",[465,690,691,694,696,698,700],{"class":467,"line":488},[465,692,693],{"class":496},"  address_token",[465,695,482],{"class":471},[465,697,545],{"class":496},[465,699,500],{"class":471},[465,701,702],{"class":503},"             \u002F\u002F LONG token address\n",[465,704,705,708,710,713,715],{"class":467,"line":507},[465,706,707],{"class":496},"  method",[465,709,482],{"class":471},[465,711,712],{"class":496}," object",[465,714,500],{"class":471},[465,716,717],{"class":503},"                    \u002F\u002F ABI method details for deployVestingWallet\n",[465,719,720,723,725,728],{"class":467,"line":522},[465,721,722],{"class":496},"  params",[465,724,482],{"class":471},[465,726,727],{"class":471}," [",[465,729,730],{"class":503},"                          \u002F\u002F Transaction parameters\n",[465,732,733,736,738],{"class":467,"line":537},[465,734,735],{"class":496},"    string",[465,737,500],{"class":471},[465,739,740],{"class":503},"                          \u002F\u002F walletAddress (owner)\n",[465,742,743],{"class":467,"line":553},[465,744,745],{"class":471},"    {\n",[465,747,748,751,753,755,757],{"class":467,"line":568},[465,749,750],{"class":496},"      startTimestamp",[465,752,482],{"class":471},[465,754,545],{"class":496},[465,756,500],{"class":471},[465,758,759],{"class":503},"       \u002F\u002F Start timestamp (BigInt as string)\n",[465,761,762,765,767,769,771],{"class":467,"line":583},[465,763,764],{"class":496},"      cliffDurationSeconds",[465,766,482],{"class":471},[465,768,545],{"class":496},[465,770,500],{"class":471},[465,772,773],{"class":503},"  \u002F\u002F Cliff duration (BigInt as string)\n",[465,775,776,779,781,783,785],{"class":467,"line":598},[465,777,778],{"class":496},"      durationSeconds",[465,780,482],{"class":471},[465,782,545],{"class":496},[465,784,500],{"class":471},[465,786,787],{"class":503},"      \u002F\u002F Duration (BigInt as string)\n",[465,789,790,793,795,797,799],{"class":467,"line":613},[465,791,792],{"class":496},"      token",[465,794,482],{"class":471},[465,796,545],{"class":496},[465,798,500],{"class":471},[465,800,801],{"class":503},"                 \u002F\u002F Token address\n",[465,803,804,807,809,811,813],{"class":467,"line":619},[465,805,806],{"class":496},"      beneficiary",[465,808,482],{"class":471},[465,810,545],{"class":496},[465,812,500],{"class":471},[465,814,815],{"class":503},"           \u002F\u002F Beneficiary address\n",[465,817,818,821,823,825,827],{"class":467,"line":625},[465,819,820],{"class":496},"      totalAllocation",[465,822,482],{"class":471},[465,824,545],{"class":496},[465,826,500],{"class":471},[465,828,829],{"class":503},"       \u002F\u002F Total allocation (BigInt as string, in wei)\n",[465,831,832,835,837,839,841],{"class":467,"line":640},[465,833,834],{"class":496},"      tgeAmount",[465,836,482],{"class":471},[465,838,545],{"class":496},[465,840,500],{"class":471},[465,842,843],{"class":503},"             \u002F\u002F TGE amount (BigInt as string, in wei)\n",[465,845,846,849,851,853,855],{"class":467,"line":655},[465,847,848],{"class":496},"      linearAllocation",[465,850,482],{"class":471},[465,852,545],{"class":496},[465,854,500],{"class":471},[465,856,857],{"class":503},"      \u002F\u002F Linear allocation (BigInt as string, in wei)\n",[465,859,861,864,866,868,870],{"class":467,"line":860},16,[465,862,863],{"class":496},"      description",[465,865,482],{"class":471},[465,867,545],{"class":496},[465,869,500],{"class":471},[465,871,872],{"class":503},"          \u002F\u002F Description\n",[465,874,876],{"class":467,"line":875},17,[465,877,878],{"class":471},"    },\n",[465,880,882],{"class":467,"line":881},18,[465,883,745],{"class":471},[465,885,887,890,892,894,896],{"class":467,"line":886},19,[465,888,889],{"class":496},"      nonce",[465,891,482],{"class":471},[465,893,545],{"class":496},[465,895,500],{"class":471},[465,897,898],{"class":503},"                 \u002F\u002F Signature nonce (BigInt as string)\n",[465,900,902,905,907,909,911],{"class":467,"line":901},20,[465,903,904],{"class":496},"      deadline",[465,906,482],{"class":471},[465,908,545],{"class":496},[465,910,500],{"class":471},[465,912,913],{"class":503},"              \u002F\u002F Signature deadline (BigInt as string)\n",[465,915,917,920,922,924,926],{"class":467,"line":916},21,[465,918,919],{"class":496},"      signature",[465,921,482],{"class":471},[465,923,545],{"class":496},[465,925,500],{"class":471},[465,927,928],{"class":503},"             \u002F\u002F Backend signature (hex string)\n",[465,930,932],{"class":467,"line":931},22,[465,933,934],{"class":471},"    }\n",[465,936,938],{"class":467,"line":937},23,[465,939,940],{"class":471},"  ],\n",[465,942,944,947,949,951,953],{"class":467,"line":943},24,[465,945,946],{"class":496},"  totalAllocationApprove",[465,948,482],{"class":471},[465,950,545],{"class":496},[465,952,500],{"class":471},[465,954,955],{"class":503},"    \u002F\u002F Total allocation in wei (for approve check)\n",[465,957,959],{"class":467,"line":958},25,[465,960,658],{"class":471},[342,962,963,968],{},[326,964,965],{},[332,966,967],{},"Note:",[350,969,970,973,976,979],{},[353,971,972],{},"The response contains transaction parameters that must be executed on the frontend",[353,974,975],{},"All BigInt values are converted to strings for JSON compatibility",[353,977,978],{},"The backend creates a signature, but the transaction is sent from the user's wallet",[353,980,981],{},"The user's wallet must have tokens and approve before executing the transaction",[375,983],{},[322,985,987],{"id":986},"contract-functions","Contract Functions",[326,989,990],{},"The following functions are called directly on the smart contracts (not MCP tools):",[403,992,994],{"id":993},"finalize-vesting-configuration","Finalize Vesting Configuration",[326,996,997,999,1001,1002,1005],{},[332,998,419],{},[421,1000],{},"\nBefore releasing tokens, the vesting configuration must be finalized. This ensures that ",[337,1003,1004],{},"TGE + linear + tranches == totalAllocation",". Only the owner can finalize the configuration.",[326,1007,1008],{},[332,1009,1010],{},"Requirements:",[350,1012,1013,1016,1024],{},[353,1014,1015],{},"Must be called by the vesting wallet owner",[353,1017,1018,1021,1022],{},[337,1019,1020],{},"TGE amount + linear allocation + tranches total"," must equal ",[337,1023,366],{},[353,1025,1026],{},"Can only be called once (configuration becomes immutable after finalization)",[326,1028,1029],{},[332,1030,1031],{},"Implementation:",[388,1033,1035],{"className":459,"code":1034,"language":461,"meta":396,"style":396},"import { getContract } from \"thirdweb\";\nimport { prepareContractCall, sendTransaction } from \"thirdweb\";\n\nasync function finalizeTranchesConfiguration() {\n  \u002F\u002F Get contract instance\n  const contract = getContract({\n    client,\n    chain: 56, \u002F\u002F BSC\n    address: vestingWalletAddress,\n  });\n\n  \u002F\u002F Check if owner\n  const owner = await contract.call({\n    functionName: \"owner\",\n  });\n\n  if (owner !== currentAddress) {\n    throw new Error(\"Unauthorized: Only owner can finalize\");\n  }\n\n  \u002F\u002F Check if already finalized\n  const isFinalized = await contract.call({\n    functionName: \"tranchesConfigurationFinalized\",\n  });\n\n  if (!isFinalized) {\n    \u002F\u002F Prepare and send finalization transaction\n    const transaction = prepareContractCall({\n      contract,\n      method: \"function finalizeTranchesConfiguration()\",\n    });\n\n    await sendTransaction({\n      transaction,\n      account,\n    });\n  }\n}\n",[337,1036,1037,1068,1094,1100,1118,1123,1142,1150,1166,1178,1187,1191,1196,1220,1236,1244,1248,1269,1293,1298,1302,1307,1328,1343,1351,1355,1372,1378,1395,1403,1420,1430,1435,1447,1455,1463,1472,1477],{"__ignoreMap":396},[465,1038,1039,1043,1046,1049,1052,1055,1058,1062,1065],{"class":467,"line":468},[465,1040,1042],{"class":1041},"s7zQu","import",[465,1044,1045],{"class":471}," {",[465,1047,1048],{"class":496}," getContract",[465,1050,1051],{"class":471}," }",[465,1053,1054],{"class":1041}," from",[465,1056,1057],{"class":471}," \"",[465,1059,1061],{"class":1060},"sfazB","thirdweb",[465,1063,1064],{"class":471},"\"",[465,1066,1067],{"class":471},";\n",[465,1069,1070,1072,1074,1077,1079,1082,1084,1086,1088,1090,1092],{"class":467,"line":475},[465,1071,1042],{"class":1041},[465,1073,1045],{"class":471},[465,1075,1076],{"class":496}," prepareContractCall",[465,1078,500],{"class":471},[465,1080,1081],{"class":496}," sendTransaction",[465,1083,1051],{"class":471},[465,1085,1054],{"class":1041},[465,1087,1057],{"class":471},[465,1089,1061],{"class":1060},[465,1091,1064],{"class":471},[465,1093,1067],{"class":471},[465,1095,1096],{"class":467,"line":488},[465,1097,1099],{"emptyLinePlaceholder":1098},true,"\n",[465,1101,1102,1106,1109,1113,1116],{"class":467,"line":507},[465,1103,1105],{"class":1104},"spNyl","async",[465,1107,1108],{"class":1104}," function",[465,1110,1112],{"class":1111},"s2Zo4"," finalizeTranchesConfiguration",[465,1114,1115],{"class":471},"()",[465,1117,485],{"class":471},[465,1119,1120],{"class":467,"line":522},[465,1121,1122],{"class":503},"  \u002F\u002F Get contract instance\n",[465,1124,1125,1128,1131,1134,1136,1140],{"class":467,"line":537},[465,1126,1127],{"class":1104},"  const",[465,1129,1130],{"class":496}," contract",[465,1132,1133],{"class":471}," =",[465,1135,1048],{"class":1111},[465,1137,1139],{"class":1138},"swJcz","(",[465,1141,472],{"class":471},[465,1143,1144,1147],{"class":467,"line":553},[465,1145,1146],{"class":496},"    client",[465,1148,1149],{"class":471},",\n",[465,1151,1152,1155,1157,1161,1163],{"class":467,"line":568},[465,1153,1154],{"class":1138},"    chain",[465,1156,482],{"class":471},[465,1158,1160],{"class":1159},"sbssI"," 56",[465,1162,500],{"class":471},[465,1164,1165],{"class":503}," \u002F\u002F BSC\n",[465,1167,1168,1171,1173,1176],{"class":467,"line":583},[465,1169,1170],{"class":1138},"    address",[465,1172,482],{"class":471},[465,1174,1175],{"class":496}," vestingWalletAddress",[465,1177,1149],{"class":471},[465,1179,1180,1183,1185],{"class":467,"line":598},[465,1181,1182],{"class":471},"  }",[465,1184,367],{"class":1138},[465,1186,1067],{"class":471},[465,1188,1189],{"class":467,"line":613},[465,1190,1099],{"emptyLinePlaceholder":1098},[465,1192,1193],{"class":467,"line":619},[465,1194,1195],{"class":503},"  \u002F\u002F Check if owner\n",[465,1197,1198,1200,1203,1205,1208,1210,1213,1216,1218],{"class":467,"line":625},[465,1199,1127],{"class":1104},[465,1201,1202],{"class":496}," owner",[465,1204,1133],{"class":471},[465,1206,1207],{"class":1041}," await",[465,1209,1130],{"class":496},[465,1211,1212],{"class":471},".",[465,1214,1215],{"class":1111},"call",[465,1217,1139],{"class":1138},[465,1219,472],{"class":471},[465,1221,1222,1225,1227,1229,1232,1234],{"class":467,"line":640},[465,1223,1224],{"class":1138},"    functionName",[465,1226,482],{"class":471},[465,1228,1057],{"class":471},[465,1230,1231],{"class":1060},"owner",[465,1233,1064],{"class":471},[465,1235,1149],{"class":471},[465,1237,1238,1240,1242],{"class":467,"line":655},[465,1239,1182],{"class":471},[465,1241,367],{"class":1138},[465,1243,1067],{"class":471},[465,1245,1246],{"class":467,"line":860},[465,1247,1099],{"emptyLinePlaceholder":1098},[465,1249,1250,1253,1256,1258,1261,1264,1267],{"class":467,"line":875},[465,1251,1252],{"class":1041},"  if",[465,1254,1255],{"class":1138}," (",[465,1257,1231],{"class":496},[465,1259,1260],{"class":471}," !==",[465,1262,1263],{"class":496}," currentAddress",[465,1265,1266],{"class":1138},") ",[465,1268,472],{"class":471},[465,1270,1271,1274,1277,1280,1282,1284,1287,1289,1291],{"class":467,"line":881},[465,1272,1273],{"class":1041},"    throw",[465,1275,1276],{"class":471}," new",[465,1278,1279],{"class":1111}," Error",[465,1281,1139],{"class":1138},[465,1283,1064],{"class":471},[465,1285,1286],{"class":1060},"Unauthorized: Only owner can finalize",[465,1288,1064],{"class":471},[465,1290,367],{"class":1138},[465,1292,1067],{"class":471},[465,1294,1295],{"class":467,"line":886},[465,1296,1297],{"class":471},"  }\n",[465,1299,1300],{"class":467,"line":901},[465,1301,1099],{"emptyLinePlaceholder":1098},[465,1303,1304],{"class":467,"line":916},[465,1305,1306],{"class":503},"  \u002F\u002F Check if already finalized\n",[465,1308,1309,1311,1314,1316,1318,1320,1322,1324,1326],{"class":467,"line":931},[465,1310,1127],{"class":1104},[465,1312,1313],{"class":496}," isFinalized",[465,1315,1133],{"class":471},[465,1317,1207],{"class":1041},[465,1319,1130],{"class":496},[465,1321,1212],{"class":471},[465,1323,1215],{"class":1111},[465,1325,1139],{"class":1138},[465,1327,472],{"class":471},[465,1329,1330,1332,1334,1336,1339,1341],{"class":467,"line":937},[465,1331,1224],{"class":1138},[465,1333,482],{"class":471},[465,1335,1057],{"class":471},[465,1337,1338],{"class":1060},"tranchesConfigurationFinalized",[465,1340,1064],{"class":471},[465,1342,1149],{"class":471},[465,1344,1345,1347,1349],{"class":467,"line":943},[465,1346,1182],{"class":471},[465,1348,367],{"class":1138},[465,1350,1067],{"class":471},[465,1352,1353],{"class":467,"line":958},[465,1354,1099],{"emptyLinePlaceholder":1098},[465,1356,1358,1360,1362,1365,1368,1370],{"class":467,"line":1357},26,[465,1359,1252],{"class":1041},[465,1361,1255],{"class":1138},[465,1363,1364],{"class":471},"!",[465,1366,1367],{"class":496},"isFinalized",[465,1369,1266],{"class":1138},[465,1371,472],{"class":471},[465,1373,1375],{"class":467,"line":1374},27,[465,1376,1377],{"class":503},"    \u002F\u002F Prepare and send finalization transaction\n",[465,1379,1381,1384,1387,1389,1391,1393],{"class":467,"line":1380},28,[465,1382,1383],{"class":1104},"    const",[465,1385,1386],{"class":496}," transaction",[465,1388,1133],{"class":471},[465,1390,1076],{"class":1111},[465,1392,1139],{"class":1138},[465,1394,472],{"class":471},[465,1396,1398,1401],{"class":467,"line":1397},29,[465,1399,1400],{"class":496},"      contract",[465,1402,1149],{"class":471},[465,1404,1406,1409,1411,1413,1416,1418],{"class":467,"line":1405},30,[465,1407,1408],{"class":1138},"      method",[465,1410,482],{"class":471},[465,1412,1057],{"class":471},[465,1414,1415],{"class":1060},"function finalizeTranchesConfiguration()",[465,1417,1064],{"class":471},[465,1419,1149],{"class":471},[465,1421,1423,1426,1428],{"class":467,"line":1422},31,[465,1424,1425],{"class":471},"    }",[465,1427,367],{"class":1138},[465,1429,1067],{"class":471},[465,1431,1433],{"class":467,"line":1432},32,[465,1434,1099],{"emptyLinePlaceholder":1098},[465,1436,1438,1441,1443,1445],{"class":467,"line":1437},33,[465,1439,1440],{"class":1041},"    await",[465,1442,1081],{"class":1111},[465,1444,1139],{"class":1138},[465,1446,472],{"class":471},[465,1448,1450,1453],{"class":467,"line":1449},34,[465,1451,1452],{"class":496},"      transaction",[465,1454,1149],{"class":471},[465,1456,1458,1461],{"class":467,"line":1457},35,[465,1459,1460],{"class":496},"      account",[465,1462,1149],{"class":471},[465,1464,1466,1468,1470],{"class":467,"line":1465},36,[465,1467,1425],{"class":471},[465,1469,367],{"class":1138},[465,1471,1067],{"class":471},[465,1473,1475],{"class":467,"line":1474},37,[465,1476,1297],{"class":471},[465,1478,1480],{"class":467,"line":1479},38,[465,1481,658],{"class":471},[403,1483,1485],{"id":1484},"release-vested-tokens","Release Vested Tokens",[326,1487,1488,1490,1491],{},[332,1489,419],{},"\nReleases vested LONG tokens to the beneficiary according to the vesting schedule. This is a contract-level function called directly on the vesting wallet. ",[332,1492,1493],{},"Requires the configuration to be finalized first.",[326,1495,1496,1498,1499,1502],{},[332,1497,334],{}," This function can be called by ",[332,1500,1501],{},"any user"," (not just the owner). Once the configuration is finalized, anyone can trigger the release of vested tokens to the beneficiary.",[326,1504,1505],{},[332,1506,1010],{},[350,1508,1509,1515,1524],{},[353,1510,1511,1512,367],{},"Configuration must be finalized (",[337,1513,1514],{},"tranchesConfigurationFinalized == true",[353,1516,1517,1523],{},[332,1518,1519,1520],{},"Anyone can call ",[337,1521,1522],{},"release()"," - no owner privileges required",[353,1525,1526],{},"There must be vested tokens available to release",[326,1528,1529],{},[332,1530,1031],{},[388,1532,1534],{"className":459,"code":1533,"language":461,"meta":396,"style":396},"import { getContract } from \"thirdweb\";\nimport { prepareContractCall, sendTransaction } from \"thirdweb\";\n\nasync function release() {\n  \u002F\u002F Get contract instance\n  const contract = getContract({\n    client,\n    chain: 56, \u002F\u002F BSC\n    address: vestingWalletAddress,\n  });\n\n  \u002F\u002F Verify finalization status\n  const isFinalized = await contract.call({\n    functionName: \"tranchesConfigurationFinalized\",\n  });\n\n  if (!isFinalized) {\n    throw new Error(\n      \"VestingNotFinalized: Configuration must be finalized before release\",\n    );\n  }\n\n  \u002F\u002F Prepare and send release transaction\n  const transaction = prepareContractCall({\n    contract,\n    method: \"function release()\",\n  });\n\n  await sendTransaction({\n    transaction,\n    account,\n  });\n}\n",[337,1535,1536,1556,1580,1584,1597,1601,1615,1621,1633,1643,1651,1655,1660,1680,1694,1702,1706,1720,1731,1743,1750,1754,1758,1763,1777,1784,1800,1808,1812,1823,1830,1837,1845],{"__ignoreMap":396},[465,1537,1538,1540,1542,1544,1546,1548,1550,1552,1554],{"class":467,"line":468},[465,1539,1042],{"class":1041},[465,1541,1045],{"class":471},[465,1543,1048],{"class":496},[465,1545,1051],{"class":471},[465,1547,1054],{"class":1041},[465,1549,1057],{"class":471},[465,1551,1061],{"class":1060},[465,1553,1064],{"class":471},[465,1555,1067],{"class":471},[465,1557,1558,1560,1562,1564,1566,1568,1570,1572,1574,1576,1578],{"class":467,"line":475},[465,1559,1042],{"class":1041},[465,1561,1045],{"class":471},[465,1563,1076],{"class":496},[465,1565,500],{"class":471},[465,1567,1081],{"class":496},[465,1569,1051],{"class":471},[465,1571,1054],{"class":1041},[465,1573,1057],{"class":471},[465,1575,1061],{"class":1060},[465,1577,1064],{"class":471},[465,1579,1067],{"class":471},[465,1581,1582],{"class":467,"line":488},[465,1583,1099],{"emptyLinePlaceholder":1098},[465,1585,1586,1588,1590,1593,1595],{"class":467,"line":507},[465,1587,1105],{"class":1104},[465,1589,1108],{"class":1104},[465,1591,1592],{"class":1111}," release",[465,1594,1115],{"class":471},[465,1596,485],{"class":471},[465,1598,1599],{"class":467,"line":522},[465,1600,1122],{"class":503},[465,1602,1603,1605,1607,1609,1611,1613],{"class":467,"line":537},[465,1604,1127],{"class":1104},[465,1606,1130],{"class":496},[465,1608,1133],{"class":471},[465,1610,1048],{"class":1111},[465,1612,1139],{"class":1138},[465,1614,472],{"class":471},[465,1616,1617,1619],{"class":467,"line":553},[465,1618,1146],{"class":496},[465,1620,1149],{"class":471},[465,1622,1623,1625,1627,1629,1631],{"class":467,"line":568},[465,1624,1154],{"class":1138},[465,1626,482],{"class":471},[465,1628,1160],{"class":1159},[465,1630,500],{"class":471},[465,1632,1165],{"class":503},[465,1634,1635,1637,1639,1641],{"class":467,"line":583},[465,1636,1170],{"class":1138},[465,1638,482],{"class":471},[465,1640,1175],{"class":496},[465,1642,1149],{"class":471},[465,1644,1645,1647,1649],{"class":467,"line":598},[465,1646,1182],{"class":471},[465,1648,367],{"class":1138},[465,1650,1067],{"class":471},[465,1652,1653],{"class":467,"line":613},[465,1654,1099],{"emptyLinePlaceholder":1098},[465,1656,1657],{"class":467,"line":619},[465,1658,1659],{"class":503},"  \u002F\u002F Verify finalization status\n",[465,1661,1662,1664,1666,1668,1670,1672,1674,1676,1678],{"class":467,"line":625},[465,1663,1127],{"class":1104},[465,1665,1313],{"class":496},[465,1667,1133],{"class":471},[465,1669,1207],{"class":1041},[465,1671,1130],{"class":496},[465,1673,1212],{"class":471},[465,1675,1215],{"class":1111},[465,1677,1139],{"class":1138},[465,1679,472],{"class":471},[465,1681,1682,1684,1686,1688,1690,1692],{"class":467,"line":640},[465,1683,1224],{"class":1138},[465,1685,482],{"class":471},[465,1687,1057],{"class":471},[465,1689,1338],{"class":1060},[465,1691,1064],{"class":471},[465,1693,1149],{"class":471},[465,1695,1696,1698,1700],{"class":467,"line":655},[465,1697,1182],{"class":471},[465,1699,367],{"class":1138},[465,1701,1067],{"class":471},[465,1703,1704],{"class":467,"line":860},[465,1705,1099],{"emptyLinePlaceholder":1098},[465,1707,1708,1710,1712,1714,1716,1718],{"class":467,"line":875},[465,1709,1252],{"class":1041},[465,1711,1255],{"class":1138},[465,1713,1364],{"class":471},[465,1715,1367],{"class":496},[465,1717,1266],{"class":1138},[465,1719,472],{"class":471},[465,1721,1722,1724,1726,1728],{"class":467,"line":881},[465,1723,1273],{"class":1041},[465,1725,1276],{"class":471},[465,1727,1279],{"class":1111},[465,1729,1730],{"class":1138},"(\n",[465,1732,1733,1736,1739,1741],{"class":467,"line":886},[465,1734,1735],{"class":471},"      \"",[465,1737,1738],{"class":1060},"VestingNotFinalized: Configuration must be finalized before release",[465,1740,1064],{"class":471},[465,1742,1149],{"class":471},[465,1744,1745,1748],{"class":467,"line":901},[465,1746,1747],{"class":1138},"    )",[465,1749,1067],{"class":471},[465,1751,1752],{"class":467,"line":916},[465,1753,1297],{"class":471},[465,1755,1756],{"class":467,"line":931},[465,1757,1099],{"emptyLinePlaceholder":1098},[465,1759,1760],{"class":467,"line":937},[465,1761,1762],{"class":503},"  \u002F\u002F Prepare and send release transaction\n",[465,1764,1765,1767,1769,1771,1773,1775],{"class":467,"line":943},[465,1766,1127],{"class":1104},[465,1768,1386],{"class":496},[465,1770,1133],{"class":471},[465,1772,1076],{"class":1111},[465,1774,1139],{"class":1138},[465,1776,472],{"class":471},[465,1778,1779,1782],{"class":467,"line":958},[465,1780,1781],{"class":496},"    contract",[465,1783,1149],{"class":471},[465,1785,1786,1789,1791,1793,1796,1798],{"class":467,"line":1357},[465,1787,1788],{"class":1138},"    method",[465,1790,482],{"class":471},[465,1792,1057],{"class":471},[465,1794,1795],{"class":1060},"function release()",[465,1797,1064],{"class":471},[465,1799,1149],{"class":471},[465,1801,1802,1804,1806],{"class":467,"line":1374},[465,1803,1182],{"class":471},[465,1805,367],{"class":1138},[465,1807,1067],{"class":471},[465,1809,1810],{"class":467,"line":1380},[465,1811,1099],{"emptyLinePlaceholder":1098},[465,1813,1814,1817,1819,1821],{"class":467,"line":1397},[465,1815,1816],{"class":1041},"  await",[465,1818,1081],{"class":1111},[465,1820,1139],{"class":1138},[465,1822,472],{"class":471},[465,1824,1825,1828],{"class":467,"line":1405},[465,1826,1827],{"class":496},"    transaction",[465,1829,1149],{"class":471},[465,1831,1832,1835],{"class":467,"line":1422},[465,1833,1834],{"class":496},"    account",[465,1836,1149],{"class":471},[465,1838,1839,1841,1843],{"class":467,"line":1432},[465,1840,1182],{"class":471},[465,1842,367],{"class":1138},[465,1844,1067],{"class":471},[465,1846,1847],{"class":467,"line":1437},[465,1848,658],{"class":471},[403,1850,1852],{"id":1851},"usage-examples","Usage Examples",[326,1854,1855],{},[332,1856,1857],{},"Deploy Vesting Wallet",[388,1859,1861],{"className":459,"code":1860,"language":461,"meta":396,"style":396},"import { getContract } from \"thirdweb\";\nimport { prepareContractCall, sendTransaction } from \"thirdweb\";\n\nasync function deployVestingWallet() {\n  \u002F\u002F 1. Get deployment parameters from backend\n  const { address, address_token, method, params, totalAllocationApprove } =\n    await mcp.tools.call(\"deploy-vesting-wallet\", {\n      chainId: 56, \u002F\u002F BSC\n      walletAddress: userAddress, \u002F\u002F User's wallet address\n      vestingWalletInfo: {\n        startTimestamp: Math.floor(Date.now() \u002F 1000),\n        cliffDurationSeconds: 60 * 60 * 24 * 30, \u002F\u002F 30 days\n        durationSeconds: 60 * 60 * 24 * 365, \u002F\u002F 1 year\n        beneficiary: \"0xBeneficiaryAddress\",\n        totalAllocation: 2, \u002F\u002F 2 tokens (human-readable)\n        tgeAmount: 0.5, \u002F\u002F 0.5 tokens at TGE\n        linearAllocation: 1.5, \u002F\u002F 1.5 tokens linearly\n        description: \"Team vesting wallet\",\n      },\n    });\n\n  \u002F\u002F 2. Get token contract instance\n  const tokenContract = getContract({\n    client,\n    chain: 56, \u002F\u002F BSC\n    address: address_token,\n  });\n\n  \u002F\u002F 3. Check token balance\n  const tokenBalance = await tokenContract.call({\n    functionName: \"balanceOf\",\n    params: [userAddress],\n  });\n\n  const totalAllocationBigInt = BigInt(totalAllocationApprove);\n  if (tokenBalance \u003C totalAllocationBigInt) {\n    throw new Error(\n      `Insufficient balance: need ${totalAllocationBigInt.toString()}`,\n    );\n  }\n\n  \u002F\u002F 4. Check and approve if needed\n  const allowance = await tokenContract.call({\n    functionName: \"allowance\",\n    params: [userAddress, address],\n  });\n\n  if (allowance \u003C totalAllocationBigInt) {\n    const approveTransaction = prepareContractCall({\n      contract: tokenContract,\n      method: \"function approve(address spender, uint256 amount)\",\n      params: [address, totalAllocationBigInt],\n    });\n\n    await sendTransaction({\n      transaction: approveTransaction,\n      account,\n    });\n  }\n\n  \u002F\u002F 5. Get factory contract instance\n  const factoryContract = getContract({\n    client,\n    chain: 56, \u002F\u002F BSC\n    address: address,\n  });\n\n  \u002F\u002F 6. Convert string params to BigInt for transaction\n  const convertedParams = [\n    params[0], \u002F\u002F walletAddress (string)\n    {\n      ...params[1],\n      startTimestamp: BigInt(params[1].startTimestamp),\n      cliffDurationSeconds: BigInt(params[1].cliffDurationSeconds),\n      durationSeconds: BigInt(params[1].durationSeconds),\n      totalAllocation: BigInt(params[1].totalAllocation),\n      tgeAmount: BigInt(params[1].tgeAmount),\n      linearAllocation: BigInt(params[1].linearAllocation),\n    },\n    {\n      ...params[2],\n      nonce: BigInt(params[2].nonce),\n      deadline: BigInt(params[2].deadline),\n    },\n  ];\n\n  \u002F\u002F 7. Execute deployment transaction\n  const deployTransaction = prepareContractCall({\n    contract: factoryContract,\n    method:\n      \"function deployVestingWallet(address _owner, (uint64 startTimestamp, uint64 cliffDurationSeconds, uint64 durationSeconds, address token, address beneficiary, uint256 totalAllocation, uint256 tgeAmount, uint256 linearAllocation, string description) vestingWalletInfo, (uint256 nonce, uint256 deadline, bytes signature) protection)\",\n    params: convertedParams,\n  });\n\n  await sendTransaction({\n    transaction: deployTransaction,\n    account,\n  });\n\n  \u002F\u002F 8. Get deployed vesting wallet address\n  const vestingWallets = await factoryContract.call({\n    functionName: \"getVestingWalletInstanceInfos\",\n    params: [beneficiaryAddress],\n  });\n\n  const vestingWalletAddress =\n    vestingWallets[vestingWallets.length - 1].vestingWallet;\n  console.log(\"Deployed vesting wallet:\", vestingWalletAddress);\n}\n",[337,1862,1863,1883,1907,1911,1924,1929,1963,1991,2004,2019,2028,2066,2096,2123,2139,2154,2169,2184,2200,2205,2213,2217,2222,2237,2243,2255,2265,2273,2277,2282,2303,2318,2335,2343,2347,2368,2386,2396,2422,2429,2434,2439,2445,2467,2483,2502,2511,2516,2533,2549,2560,2576,2597,2606,2611,2622,2633,2640,2649,2654,2659,2665,2681,2688,2701,2712,2721,2726,2732,2745,2763,2768,2786,2814,2842,2870,2897,2925,2953,2958,2963,2979,3007,3035,3040,3048,3053,3059,3075,3086,3094,3106,3117,3126,3131,3142,3153,3160,3169,3174,3180,3202,3218,3234,3243,3248,3257,3288,3316],{"__ignoreMap":396},[465,1864,1865,1867,1869,1871,1873,1875,1877,1879,1881],{"class":467,"line":468},[465,1866,1042],{"class":1041},[465,1868,1045],{"class":471},[465,1870,1048],{"class":496},[465,1872,1051],{"class":471},[465,1874,1054],{"class":1041},[465,1876,1057],{"class":471},[465,1878,1061],{"class":1060},[465,1880,1064],{"class":471},[465,1882,1067],{"class":471},[465,1884,1885,1887,1889,1891,1893,1895,1897,1899,1901,1903,1905],{"class":467,"line":475},[465,1886,1042],{"class":1041},[465,1888,1045],{"class":471},[465,1890,1076],{"class":496},[465,1892,500],{"class":471},[465,1894,1081],{"class":496},[465,1896,1051],{"class":471},[465,1898,1054],{"class":1041},[465,1900,1057],{"class":471},[465,1902,1061],{"class":1060},[465,1904,1064],{"class":471},[465,1906,1067],{"class":471},[465,1908,1909],{"class":467,"line":488},[465,1910,1099],{"emptyLinePlaceholder":1098},[465,1912,1913,1915,1917,1920,1922],{"class":467,"line":507},[465,1914,1105],{"class":1104},[465,1916,1108],{"class":1104},[465,1918,1919],{"class":1111}," deployVestingWallet",[465,1921,1115],{"class":471},[465,1923,485],{"class":471},[465,1925,1926],{"class":467,"line":522},[465,1927,1928],{"class":503},"  \u002F\u002F 1. Get deployment parameters from backend\n",[465,1930,1931,1933,1935,1938,1940,1943,1945,1948,1950,1953,1955,1958,1960],{"class":467,"line":537},[465,1932,1127],{"class":1104},[465,1934,1045],{"class":471},[465,1936,1937],{"class":496}," address",[465,1939,500],{"class":471},[465,1941,1942],{"class":496}," address_token",[465,1944,500],{"class":471},[465,1946,1947],{"class":496}," method",[465,1949,500],{"class":471},[465,1951,1952],{"class":496}," params",[465,1954,500],{"class":471},[465,1956,1957],{"class":496}," totalAllocationApprove",[465,1959,1051],{"class":471},[465,1961,1962],{"class":471}," =\n",[465,1964,1965,1967,1970,1972,1975,1977,1979,1981,1983,1985,1987,1989],{"class":467,"line":553},[465,1966,1440],{"class":1041},[465,1968,1969],{"class":496}," mcp",[465,1971,1212],{"class":471},[465,1973,1974],{"class":496},"tools",[465,1976,1212],{"class":471},[465,1978,1215],{"class":1111},[465,1980,1139],{"class":1138},[465,1982,1064],{"class":471},[465,1984,339],{"class":1060},[465,1986,1064],{"class":471},[465,1988,500],{"class":471},[465,1990,485],{"class":471},[465,1992,1993,1996,1998,2000,2002],{"class":467,"line":568},[465,1994,1995],{"class":1138},"      chainId",[465,1997,482],{"class":471},[465,1999,1160],{"class":1159},[465,2001,500],{"class":471},[465,2003,1165],{"class":503},[465,2005,2006,2009,2011,2014,2016],{"class":467,"line":583},[465,2007,2008],{"class":1138},"      walletAddress",[465,2010,482],{"class":471},[465,2012,2013],{"class":496}," userAddress",[465,2015,500],{"class":471},[465,2017,2018],{"class":503}," \u002F\u002F User's wallet address\n",[465,2020,2021,2024,2026],{"class":467,"line":598},[465,2022,2023],{"class":1138},"      vestingWalletInfo",[465,2025,482],{"class":471},[465,2027,485],{"class":471},[465,2029,2030,2033,2035,2038,2040,2043,2045,2048,2050,2053,2056,2059,2062,2064],{"class":467,"line":613},[465,2031,2032],{"class":1138},"        startTimestamp",[465,2034,482],{"class":471},[465,2036,2037],{"class":496}," Math",[465,2039,1212],{"class":471},[465,2041,2042],{"class":1111},"floor",[465,2044,1139],{"class":1138},[465,2046,2047],{"class":496},"Date",[465,2049,1212],{"class":471},[465,2051,2052],{"class":1111},"now",[465,2054,2055],{"class":1138},"() ",[465,2057,2058],{"class":471},"\u002F",[465,2060,2061],{"class":1159}," 1000",[465,2063,367],{"class":1138},[465,2065,1149],{"class":471},[465,2067,2068,2071,2073,2076,2079,2081,2083,2086,2088,2091,2093],{"class":467,"line":619},[465,2069,2070],{"class":1138},"        cliffDurationSeconds",[465,2072,482],{"class":471},[465,2074,2075],{"class":1159}," 60",[465,2077,2078],{"class":471}," *",[465,2080,2075],{"class":1159},[465,2082,2078],{"class":471},[465,2084,2085],{"class":1159}," 24",[465,2087,2078],{"class":471},[465,2089,2090],{"class":1159}," 30",[465,2092,500],{"class":471},[465,2094,2095],{"class":503}," \u002F\u002F 30 days\n",[465,2097,2098,2101,2103,2105,2107,2109,2111,2113,2115,2118,2120],{"class":467,"line":625},[465,2099,2100],{"class":1138},"        durationSeconds",[465,2102,482],{"class":471},[465,2104,2075],{"class":1159},[465,2106,2078],{"class":471},[465,2108,2075],{"class":1159},[465,2110,2078],{"class":471},[465,2112,2085],{"class":1159},[465,2114,2078],{"class":471},[465,2116,2117],{"class":1159}," 365",[465,2119,500],{"class":471},[465,2121,2122],{"class":503}," \u002F\u002F 1 year\n",[465,2124,2125,2128,2130,2132,2135,2137],{"class":467,"line":640},[465,2126,2127],{"class":1138},"        beneficiary",[465,2129,482],{"class":471},[465,2131,1057],{"class":471},[465,2133,2134],{"class":1060},"0xBeneficiaryAddress",[465,2136,1064],{"class":471},[465,2138,1149],{"class":471},[465,2140,2141,2144,2146,2149,2151],{"class":467,"line":655},[465,2142,2143],{"class":1138},"        totalAllocation",[465,2145,482],{"class":471},[465,2147,2148],{"class":1159}," 2",[465,2150,500],{"class":471},[465,2152,2153],{"class":503}," \u002F\u002F 2 tokens (human-readable)\n",[465,2155,2156,2159,2161,2164,2166],{"class":467,"line":860},[465,2157,2158],{"class":1138},"        tgeAmount",[465,2160,482],{"class":471},[465,2162,2163],{"class":1159}," 0.5",[465,2165,500],{"class":471},[465,2167,2168],{"class":503}," \u002F\u002F 0.5 tokens at TGE\n",[465,2170,2171,2174,2176,2179,2181],{"class":467,"line":875},[465,2172,2173],{"class":1138},"        linearAllocation",[465,2175,482],{"class":471},[465,2177,2178],{"class":1159}," 1.5",[465,2180,500],{"class":471},[465,2182,2183],{"class":503}," \u002F\u002F 1.5 tokens linearly\n",[465,2185,2186,2189,2191,2193,2196,2198],{"class":467,"line":881},[465,2187,2188],{"class":1138},"        description",[465,2190,482],{"class":471},[465,2192,1057],{"class":471},[465,2194,2195],{"class":1060},"Team vesting wallet",[465,2197,1064],{"class":471},[465,2199,1149],{"class":471},[465,2201,2202],{"class":467,"line":886},[465,2203,2204],{"class":471},"      },\n",[465,2206,2207,2209,2211],{"class":467,"line":901},[465,2208,1425],{"class":471},[465,2210,367],{"class":1138},[465,2212,1067],{"class":471},[465,2214,2215],{"class":467,"line":916},[465,2216,1099],{"emptyLinePlaceholder":1098},[465,2218,2219],{"class":467,"line":931},[465,2220,2221],{"class":503},"  \u002F\u002F 2. Get token contract instance\n",[465,2223,2224,2226,2229,2231,2233,2235],{"class":467,"line":937},[465,2225,1127],{"class":1104},[465,2227,2228],{"class":496}," tokenContract",[465,2230,1133],{"class":471},[465,2232,1048],{"class":1111},[465,2234,1139],{"class":1138},[465,2236,472],{"class":471},[465,2238,2239,2241],{"class":467,"line":943},[465,2240,1146],{"class":496},[465,2242,1149],{"class":471},[465,2244,2245,2247,2249,2251,2253],{"class":467,"line":958},[465,2246,1154],{"class":1138},[465,2248,482],{"class":471},[465,2250,1160],{"class":1159},[465,2252,500],{"class":471},[465,2254,1165],{"class":503},[465,2256,2257,2259,2261,2263],{"class":467,"line":1357},[465,2258,1170],{"class":1138},[465,2260,482],{"class":471},[465,2262,1942],{"class":496},[465,2264,1149],{"class":471},[465,2266,2267,2269,2271],{"class":467,"line":1374},[465,2268,1182],{"class":471},[465,2270,367],{"class":1138},[465,2272,1067],{"class":471},[465,2274,2275],{"class":467,"line":1380},[465,2276,1099],{"emptyLinePlaceholder":1098},[465,2278,2279],{"class":467,"line":1397},[465,2280,2281],{"class":503},"  \u002F\u002F 3. Check token balance\n",[465,2283,2284,2286,2289,2291,2293,2295,2297,2299,2301],{"class":467,"line":1405},[465,2285,1127],{"class":1104},[465,2287,2288],{"class":496}," tokenBalance",[465,2290,1133],{"class":471},[465,2292,1207],{"class":1041},[465,2294,2228],{"class":496},[465,2296,1212],{"class":471},[465,2298,1215],{"class":1111},[465,2300,1139],{"class":1138},[465,2302,472],{"class":471},[465,2304,2305,2307,2309,2311,2314,2316],{"class":467,"line":1422},[465,2306,1224],{"class":1138},[465,2308,482],{"class":471},[465,2310,1057],{"class":471},[465,2312,2313],{"class":1060},"balanceOf",[465,2315,1064],{"class":471},[465,2317,1149],{"class":471},[465,2319,2320,2323,2325,2327,2330,2333],{"class":467,"line":1432},[465,2321,2322],{"class":1138},"    params",[465,2324,482],{"class":471},[465,2326,727],{"class":1138},[465,2328,2329],{"class":496},"userAddress",[465,2331,2332],{"class":1138},"]",[465,2334,1149],{"class":471},[465,2336,2337,2339,2341],{"class":467,"line":1437},[465,2338,1182],{"class":471},[465,2340,367],{"class":1138},[465,2342,1067],{"class":471},[465,2344,2345],{"class":467,"line":1449},[465,2346,1099],{"emptyLinePlaceholder":1098},[465,2348,2349,2351,2354,2356,2359,2361,2364,2366],{"class":467,"line":1457},[465,2350,1127],{"class":1104},[465,2352,2353],{"class":496}," totalAllocationBigInt",[465,2355,1133],{"class":471},[465,2357,2358],{"class":1111}," BigInt",[465,2360,1139],{"class":1138},[465,2362,2363],{"class":496},"totalAllocationApprove",[465,2365,367],{"class":1138},[465,2367,1067],{"class":471},[465,2369,2370,2372,2374,2377,2380,2382,2384],{"class":467,"line":1465},[465,2371,1252],{"class":1041},[465,2373,1255],{"class":1138},[465,2375,2376],{"class":496},"tokenBalance",[465,2378,2379],{"class":471}," \u003C",[465,2381,2353],{"class":496},[465,2383,1266],{"class":1138},[465,2385,472],{"class":471},[465,2387,2388,2390,2392,2394],{"class":467,"line":1474},[465,2389,1273],{"class":1041},[465,2391,1276],{"class":471},[465,2393,1279],{"class":1111},[465,2395,1730],{"class":1138},[465,2397,2398,2401,2404,2407,2410,2412,2415,2417,2420],{"class":467,"line":1479},[465,2399,2400],{"class":471},"      `",[465,2402,2403],{"class":1060},"Insufficient balance: need ",[465,2405,2406],{"class":471},"${",[465,2408,2409],{"class":496},"totalAllocationBigInt",[465,2411,1212],{"class":471},[465,2413,2414],{"class":1111},"toString",[465,2416,1115],{"class":496},[465,2418,2419],{"class":471},"}`",[465,2421,1149],{"class":471},[465,2423,2425,2427],{"class":467,"line":2424},39,[465,2426,1747],{"class":1138},[465,2428,1067],{"class":471},[465,2430,2432],{"class":467,"line":2431},40,[465,2433,1297],{"class":471},[465,2435,2437],{"class":467,"line":2436},41,[465,2438,1099],{"emptyLinePlaceholder":1098},[465,2440,2442],{"class":467,"line":2441},42,[465,2443,2444],{"class":503},"  \u002F\u002F 4. Check and approve if needed\n",[465,2446,2448,2450,2453,2455,2457,2459,2461,2463,2465],{"class":467,"line":2447},43,[465,2449,1127],{"class":1104},[465,2451,2452],{"class":496}," allowance",[465,2454,1133],{"class":471},[465,2456,1207],{"class":1041},[465,2458,2228],{"class":496},[465,2460,1212],{"class":471},[465,2462,1215],{"class":1111},[465,2464,1139],{"class":1138},[465,2466,472],{"class":471},[465,2468,2470,2472,2474,2476,2479,2481],{"class":467,"line":2469},44,[465,2471,1224],{"class":1138},[465,2473,482],{"class":471},[465,2475,1057],{"class":471},[465,2477,2478],{"class":1060},"allowance",[465,2480,1064],{"class":471},[465,2482,1149],{"class":471},[465,2484,2486,2488,2490,2492,2494,2496,2498,2500],{"class":467,"line":2485},45,[465,2487,2322],{"class":1138},[465,2489,482],{"class":471},[465,2491,727],{"class":1138},[465,2493,2329],{"class":496},[465,2495,500],{"class":471},[465,2497,1937],{"class":496},[465,2499,2332],{"class":1138},[465,2501,1149],{"class":471},[465,2503,2505,2507,2509],{"class":467,"line":2504},46,[465,2506,1182],{"class":471},[465,2508,367],{"class":1138},[465,2510,1067],{"class":471},[465,2512,2514],{"class":467,"line":2513},47,[465,2515,1099],{"emptyLinePlaceholder":1098},[465,2517,2519,2521,2523,2525,2527,2529,2531],{"class":467,"line":2518},48,[465,2520,1252],{"class":1041},[465,2522,1255],{"class":1138},[465,2524,2478],{"class":496},[465,2526,2379],{"class":471},[465,2528,2353],{"class":496},[465,2530,1266],{"class":1138},[465,2532,472],{"class":471},[465,2534,2536,2538,2541,2543,2545,2547],{"class":467,"line":2535},49,[465,2537,1383],{"class":1104},[465,2539,2540],{"class":496}," approveTransaction",[465,2542,1133],{"class":471},[465,2544,1076],{"class":1111},[465,2546,1139],{"class":1138},[465,2548,472],{"class":471},[465,2550,2552,2554,2556,2558],{"class":467,"line":2551},50,[465,2553,1400],{"class":1138},[465,2555,482],{"class":471},[465,2557,2228],{"class":496},[465,2559,1149],{"class":471},[465,2561,2563,2565,2567,2569,2572,2574],{"class":467,"line":2562},51,[465,2564,1408],{"class":1138},[465,2566,482],{"class":471},[465,2568,1057],{"class":471},[465,2570,2571],{"class":1060},"function approve(address spender, uint256 amount)",[465,2573,1064],{"class":471},[465,2575,1149],{"class":471},[465,2577,2579,2582,2584,2586,2589,2591,2593,2595],{"class":467,"line":2578},52,[465,2580,2581],{"class":1138},"      params",[465,2583,482],{"class":471},[465,2585,727],{"class":1138},[465,2587,2588],{"class":496},"address",[465,2590,500],{"class":471},[465,2592,2353],{"class":496},[465,2594,2332],{"class":1138},[465,2596,1149],{"class":471},[465,2598,2600,2602,2604],{"class":467,"line":2599},53,[465,2601,1425],{"class":471},[465,2603,367],{"class":1138},[465,2605,1067],{"class":471},[465,2607,2609],{"class":467,"line":2608},54,[465,2610,1099],{"emptyLinePlaceholder":1098},[465,2612,2614,2616,2618,2620],{"class":467,"line":2613},55,[465,2615,1440],{"class":1041},[465,2617,1081],{"class":1111},[465,2619,1139],{"class":1138},[465,2621,472],{"class":471},[465,2623,2625,2627,2629,2631],{"class":467,"line":2624},56,[465,2626,1452],{"class":1138},[465,2628,482],{"class":471},[465,2630,2540],{"class":496},[465,2632,1149],{"class":471},[465,2634,2636,2638],{"class":467,"line":2635},57,[465,2637,1460],{"class":496},[465,2639,1149],{"class":471},[465,2641,2643,2645,2647],{"class":467,"line":2642},58,[465,2644,1425],{"class":471},[465,2646,367],{"class":1138},[465,2648,1067],{"class":471},[465,2650,2652],{"class":467,"line":2651},59,[465,2653,1297],{"class":471},[465,2655,2657],{"class":467,"line":2656},60,[465,2658,1099],{"emptyLinePlaceholder":1098},[465,2660,2662],{"class":467,"line":2661},61,[465,2663,2664],{"class":503},"  \u002F\u002F 5. Get factory contract instance\n",[465,2666,2668,2670,2673,2675,2677,2679],{"class":467,"line":2667},62,[465,2669,1127],{"class":1104},[465,2671,2672],{"class":496}," factoryContract",[465,2674,1133],{"class":471},[465,2676,1048],{"class":1111},[465,2678,1139],{"class":1138},[465,2680,472],{"class":471},[465,2682,2684,2686],{"class":467,"line":2683},63,[465,2685,1146],{"class":496},[465,2687,1149],{"class":471},[465,2689,2691,2693,2695,2697,2699],{"class":467,"line":2690},64,[465,2692,1154],{"class":1138},[465,2694,482],{"class":471},[465,2696,1160],{"class":1159},[465,2698,500],{"class":471},[465,2700,1165],{"class":503},[465,2702,2704,2706,2708,2710],{"class":467,"line":2703},65,[465,2705,1170],{"class":1138},[465,2707,482],{"class":471},[465,2709,1937],{"class":496},[465,2711,1149],{"class":471},[465,2713,2715,2717,2719],{"class":467,"line":2714},66,[465,2716,1182],{"class":471},[465,2718,367],{"class":1138},[465,2720,1067],{"class":471},[465,2722,2724],{"class":467,"line":2723},67,[465,2725,1099],{"emptyLinePlaceholder":1098},[465,2727,2729],{"class":467,"line":2728},68,[465,2730,2731],{"class":503},"  \u002F\u002F 6. Convert string params to BigInt for transaction\n",[465,2733,2735,2737,2740,2742],{"class":467,"line":2734},69,[465,2736,1127],{"class":1104},[465,2738,2739],{"class":496}," convertedParams",[465,2741,1133],{"class":471},[465,2743,2744],{"class":1138}," [\n",[465,2746,2748,2750,2753,2756,2758,2760],{"class":467,"line":2747},70,[465,2749,2322],{"class":496},[465,2751,2752],{"class":1138},"[",[465,2754,2755],{"class":1159},"0",[465,2757,2332],{"class":1138},[465,2759,500],{"class":471},[465,2761,2762],{"class":503}," \u002F\u002F walletAddress (string)\n",[465,2764,2766],{"class":467,"line":2765},71,[465,2767,745],{"class":471},[465,2769,2771,2774,2777,2779,2782,2784],{"class":467,"line":2770},72,[465,2772,2773],{"class":471},"      ...",[465,2775,2776],{"class":496},"params",[465,2778,2752],{"class":1138},[465,2780,2781],{"class":1159},"1",[465,2783,2332],{"class":1138},[465,2785,1149],{"class":471},[465,2787,2789,2791,2793,2795,2797,2799,2801,2803,2805,2807,2810,2812],{"class":467,"line":2788},73,[465,2790,750],{"class":1138},[465,2792,482],{"class":471},[465,2794,2358],{"class":1111},[465,2796,1139],{"class":1138},[465,2798,2776],{"class":496},[465,2800,2752],{"class":1138},[465,2802,2781],{"class":1159},[465,2804,2332],{"class":1138},[465,2806,1212],{"class":471},[465,2808,2809],{"class":496},"startTimestamp",[465,2811,367],{"class":1138},[465,2813,1149],{"class":471},[465,2815,2817,2819,2821,2823,2825,2827,2829,2831,2833,2835,2838,2840],{"class":467,"line":2816},74,[465,2818,764],{"class":1138},[465,2820,482],{"class":471},[465,2822,2358],{"class":1111},[465,2824,1139],{"class":1138},[465,2826,2776],{"class":496},[465,2828,2752],{"class":1138},[465,2830,2781],{"class":1159},[465,2832,2332],{"class":1138},[465,2834,1212],{"class":471},[465,2836,2837],{"class":496},"cliffDurationSeconds",[465,2839,367],{"class":1138},[465,2841,1149],{"class":471},[465,2843,2845,2847,2849,2851,2853,2855,2857,2859,2861,2863,2866,2868],{"class":467,"line":2844},75,[465,2846,778],{"class":1138},[465,2848,482],{"class":471},[465,2850,2358],{"class":1111},[465,2852,1139],{"class":1138},[465,2854,2776],{"class":496},[465,2856,2752],{"class":1138},[465,2858,2781],{"class":1159},[465,2860,2332],{"class":1138},[465,2862,1212],{"class":471},[465,2864,2865],{"class":496},"durationSeconds",[465,2867,367],{"class":1138},[465,2869,1149],{"class":471},[465,2871,2873,2875,2877,2879,2881,2883,2885,2887,2889,2891,2893,2895],{"class":467,"line":2872},76,[465,2874,820],{"class":1138},[465,2876,482],{"class":471},[465,2878,2358],{"class":1111},[465,2880,1139],{"class":1138},[465,2882,2776],{"class":496},[465,2884,2752],{"class":1138},[465,2886,2781],{"class":1159},[465,2888,2332],{"class":1138},[465,2890,1212],{"class":471},[465,2892,366],{"class":496},[465,2894,367],{"class":1138},[465,2896,1149],{"class":471},[465,2898,2900,2902,2904,2906,2908,2910,2912,2914,2916,2918,2921,2923],{"class":467,"line":2899},77,[465,2901,834],{"class":1138},[465,2903,482],{"class":471},[465,2905,2358],{"class":1111},[465,2907,1139],{"class":1138},[465,2909,2776],{"class":496},[465,2911,2752],{"class":1138},[465,2913,2781],{"class":1159},[465,2915,2332],{"class":1138},[465,2917,1212],{"class":471},[465,2919,2920],{"class":496},"tgeAmount",[465,2922,367],{"class":1138},[465,2924,1149],{"class":471},[465,2926,2928,2930,2932,2934,2936,2938,2940,2942,2944,2946,2949,2951],{"class":467,"line":2927},78,[465,2929,848],{"class":1138},[465,2931,482],{"class":471},[465,2933,2358],{"class":1111},[465,2935,1139],{"class":1138},[465,2937,2776],{"class":496},[465,2939,2752],{"class":1138},[465,2941,2781],{"class":1159},[465,2943,2332],{"class":1138},[465,2945,1212],{"class":471},[465,2947,2948],{"class":496},"linearAllocation",[465,2950,367],{"class":1138},[465,2952,1149],{"class":471},[465,2954,2956],{"class":467,"line":2955},79,[465,2957,878],{"class":471},[465,2959,2961],{"class":467,"line":2960},80,[465,2962,745],{"class":471},[465,2964,2966,2968,2970,2972,2975,2977],{"class":467,"line":2965},81,[465,2967,2773],{"class":471},[465,2969,2776],{"class":496},[465,2971,2752],{"class":1138},[465,2973,2974],{"class":1159},"2",[465,2976,2332],{"class":1138},[465,2978,1149],{"class":471},[465,2980,2982,2984,2986,2988,2990,2992,2994,2996,2998,3000,3003,3005],{"class":467,"line":2981},82,[465,2983,889],{"class":1138},[465,2985,482],{"class":471},[465,2987,2358],{"class":1111},[465,2989,1139],{"class":1138},[465,2991,2776],{"class":496},[465,2993,2752],{"class":1138},[465,2995,2974],{"class":1159},[465,2997,2332],{"class":1138},[465,2999,1212],{"class":471},[465,3001,3002],{"class":496},"nonce",[465,3004,367],{"class":1138},[465,3006,1149],{"class":471},[465,3008,3010,3012,3014,3016,3018,3020,3022,3024,3026,3028,3031,3033],{"class":467,"line":3009},83,[465,3011,904],{"class":1138},[465,3013,482],{"class":471},[465,3015,2358],{"class":1111},[465,3017,1139],{"class":1138},[465,3019,2776],{"class":496},[465,3021,2752],{"class":1138},[465,3023,2974],{"class":1159},[465,3025,2332],{"class":1138},[465,3027,1212],{"class":471},[465,3029,3030],{"class":496},"deadline",[465,3032,367],{"class":1138},[465,3034,1149],{"class":471},[465,3036,3038],{"class":467,"line":3037},84,[465,3039,878],{"class":471},[465,3041,3043,3046],{"class":467,"line":3042},85,[465,3044,3045],{"class":1138},"  ]",[465,3047,1067],{"class":471},[465,3049,3051],{"class":467,"line":3050},86,[465,3052,1099],{"emptyLinePlaceholder":1098},[465,3054,3056],{"class":467,"line":3055},87,[465,3057,3058],{"class":503},"  \u002F\u002F 7. Execute deployment transaction\n",[465,3060,3062,3064,3067,3069,3071,3073],{"class":467,"line":3061},88,[465,3063,1127],{"class":1104},[465,3065,3066],{"class":496}," deployTransaction",[465,3068,1133],{"class":471},[465,3070,1076],{"class":1111},[465,3072,1139],{"class":1138},[465,3074,472],{"class":471},[465,3076,3078,3080,3082,3084],{"class":467,"line":3077},89,[465,3079,1781],{"class":1138},[465,3081,482],{"class":471},[465,3083,2672],{"class":496},[465,3085,1149],{"class":471},[465,3087,3089,3091],{"class":467,"line":3088},90,[465,3090,1788],{"class":1138},[465,3092,3093],{"class":471},":\n",[465,3095,3097,3099,3102,3104],{"class":467,"line":3096},91,[465,3098,1735],{"class":471},[465,3100,3101],{"class":1060},"function deployVestingWallet(address _owner, (uint64 startTimestamp, uint64 cliffDurationSeconds, uint64 durationSeconds, address token, address beneficiary, uint256 totalAllocation, uint256 tgeAmount, uint256 linearAllocation, string description) vestingWalletInfo, (uint256 nonce, uint256 deadline, bytes signature) protection)",[465,3103,1064],{"class":471},[465,3105,1149],{"class":471},[465,3107,3109,3111,3113,3115],{"class":467,"line":3108},92,[465,3110,2322],{"class":1138},[465,3112,482],{"class":471},[465,3114,2739],{"class":496},[465,3116,1149],{"class":471},[465,3118,3120,3122,3124],{"class":467,"line":3119},93,[465,3121,1182],{"class":471},[465,3123,367],{"class":1138},[465,3125,1067],{"class":471},[465,3127,3129],{"class":467,"line":3128},94,[465,3130,1099],{"emptyLinePlaceholder":1098},[465,3132,3134,3136,3138,3140],{"class":467,"line":3133},95,[465,3135,1816],{"class":1041},[465,3137,1081],{"class":1111},[465,3139,1139],{"class":1138},[465,3141,472],{"class":471},[465,3143,3145,3147,3149,3151],{"class":467,"line":3144},96,[465,3146,1827],{"class":1138},[465,3148,482],{"class":471},[465,3150,3066],{"class":496},[465,3152,1149],{"class":471},[465,3154,3156,3158],{"class":467,"line":3155},97,[465,3157,1834],{"class":496},[465,3159,1149],{"class":471},[465,3161,3163,3165,3167],{"class":467,"line":3162},98,[465,3164,1182],{"class":471},[465,3166,367],{"class":1138},[465,3168,1067],{"class":471},[465,3170,3172],{"class":467,"line":3171},99,[465,3173,1099],{"emptyLinePlaceholder":1098},[465,3175,3177],{"class":467,"line":3176},100,[465,3178,3179],{"class":503},"  \u002F\u002F 8. Get deployed vesting wallet address\n",[465,3181,3183,3185,3188,3190,3192,3194,3196,3198,3200],{"class":467,"line":3182},101,[465,3184,1127],{"class":1104},[465,3186,3187],{"class":496}," vestingWallets",[465,3189,1133],{"class":471},[465,3191,1207],{"class":1041},[465,3193,2672],{"class":496},[465,3195,1212],{"class":471},[465,3197,1215],{"class":1111},[465,3199,1139],{"class":1138},[465,3201,472],{"class":471},[465,3203,3205,3207,3209,3211,3214,3216],{"class":467,"line":3204},102,[465,3206,1224],{"class":1138},[465,3208,482],{"class":471},[465,3210,1057],{"class":471},[465,3212,3213],{"class":1060},"getVestingWalletInstanceInfos",[465,3215,1064],{"class":471},[465,3217,1149],{"class":471},[465,3219,3221,3223,3225,3227,3230,3232],{"class":467,"line":3220},103,[465,3222,2322],{"class":1138},[465,3224,482],{"class":471},[465,3226,727],{"class":1138},[465,3228,3229],{"class":496},"beneficiaryAddress",[465,3231,2332],{"class":1138},[465,3233,1149],{"class":471},[465,3235,3237,3239,3241],{"class":467,"line":3236},104,[465,3238,1182],{"class":471},[465,3240,367],{"class":1138},[465,3242,1067],{"class":471},[465,3244,3246],{"class":467,"line":3245},105,[465,3247,1099],{"emptyLinePlaceholder":1098},[465,3249,3251,3253,3255],{"class":467,"line":3250},106,[465,3252,1127],{"class":1104},[465,3254,1175],{"class":496},[465,3256,1962],{"class":471},[465,3258,3260,3263,3265,3268,3270,3273,3276,3279,3281,3283,3286],{"class":467,"line":3259},107,[465,3261,3262],{"class":496},"    vestingWallets",[465,3264,2752],{"class":1138},[465,3266,3267],{"class":496},"vestingWallets",[465,3269,1212],{"class":471},[465,3271,3272],{"class":496},"length",[465,3274,3275],{"class":471}," -",[465,3277,3278],{"class":1159}," 1",[465,3280,2332],{"class":1138},[465,3282,1212],{"class":471},[465,3284,3285],{"class":496},"vestingWallet",[465,3287,1067],{"class":471},[465,3289,3291,3294,3296,3299,3301,3303,3306,3308,3310,3312,3314],{"class":467,"line":3290},108,[465,3292,3293],{"class":496},"  console",[465,3295,1212],{"class":471},[465,3297,3298],{"class":1111},"log",[465,3300,1139],{"class":1138},[465,3302,1064],{"class":471},[465,3304,3305],{"class":1060},"Deployed vesting wallet:",[465,3307,1064],{"class":471},[465,3309,500],{"class":471},[465,3311,1175],{"class":496},[465,3313,367],{"class":1138},[465,3315,1067],{"class":471},[465,3317,3319],{"class":467,"line":3318},109,[465,3320,658],{"class":471},[342,3322,3323,3327],{},[326,3324,3325],{},[332,3326,334],{},[350,3328,3329,3343,3350,3357,3368,3374],{},[353,3330,3331,3332,3334,3335,3334,3337,3339,3340,3342],{},"Token amounts (",[337,3333,366],{},", ",[337,3336,2920],{},[337,3338,2948],{},") should be specified in human-readable format (e.g., ",[337,3341,2974],{}," for 2 tokens). The system automatically converts them to wei (18 decimals) for LONG tokens.",[353,3344,3345,3346,3349],{},"The ",[337,3347,3348],{},"token"," field is automatically resolved from the LONG token address on the specified chain and should not be included in the request.",[353,3351,3352,3353,3356],{},"Requires admin authentication (",[337,3354,3355],{},"UserRole.admin",").",[353,3358,3359,335,3362,3364,3365,3367],{},[332,3360,3361],{},"User Requirements:",[337,3363,436],{}," must have at least ",[337,3366,366],{}," LONG tokens and must approve the factory contract.",[353,3369,3370,3373],{},[332,3371,3372],{},"Transaction Execution:"," The transaction is executed on the frontend from the user's wallet, not by the backend.",[353,3375,3376,412,3379,1021,3382,3384],{},[332,3377,3378],{},"Allocation Balance:",[337,3380,3381],{},"tgeAmount + linearAllocation + tranches",[337,3383,366],{}," before finalization.",[326,3386,3387],{},[332,3388,3389],{},"Get Vesting Wallet Info by Beneficiary",[388,3391,3393],{"className":459,"code":3392,"language":461,"meta":396,"style":396},"import { getContract } from \"thirdweb\";\n\n\u002F\u002F Get all vesting wallets for a beneficiary (direct contract call, not MCP tool)\nconst factoryAddress = \"0xFactoryAddress\"; \u002F\u002F Factory contract address\nconst beneficiary = \"0xBeneficiaryAddress\";\n\n\u002F\u002F Get factory contract instance\nconst factoryContract = getContract({\n  client,\n  chain: 56, \u002F\u002F BSC\n  address: factoryAddress,\n});\n\n\u002F\u002F Call the function\nconst vestingWallets = await factoryContract.call({\n  functionName: \"getVestingWalletInstanceInfos\",\n  params: [beneficiary],\n});\n\n\u002F\u002F Returns array of vesting wallet instances for this beneficiary\nconsole.log(vestingWallets);\n",[337,3394,3395,3415,3419,3424,3448,3465,3469,3474,3489,3496,3509,3520,3529,3533,3538,3559,3574,3585,3593,3597,3602],{"__ignoreMap":396},[465,3396,3397,3399,3401,3403,3405,3407,3409,3411,3413],{"class":467,"line":468},[465,3398,1042],{"class":1041},[465,3400,1045],{"class":471},[465,3402,1048],{"class":496},[465,3404,1051],{"class":471},[465,3406,1054],{"class":1041},[465,3408,1057],{"class":471},[465,3410,1061],{"class":1060},[465,3412,1064],{"class":471},[465,3414,1067],{"class":471},[465,3416,3417],{"class":467,"line":475},[465,3418,1099],{"emptyLinePlaceholder":1098},[465,3420,3421],{"class":467,"line":488},[465,3422,3423],{"class":503},"\u002F\u002F Get all vesting wallets for a beneficiary (direct contract call, not MCP tool)\n",[465,3425,3426,3429,3432,3435,3437,3440,3442,3445],{"class":467,"line":507},[465,3427,3428],{"class":1104},"const",[465,3430,3431],{"class":496}," factoryAddress ",[465,3433,3434],{"class":471},"=",[465,3436,1057],{"class":471},[465,3438,3439],{"class":1060},"0xFactoryAddress",[465,3441,1064],{"class":471},[465,3443,3444],{"class":471},";",[465,3446,3447],{"class":503}," \u002F\u002F Factory contract address\n",[465,3449,3450,3452,3455,3457,3459,3461,3463],{"class":467,"line":522},[465,3451,3428],{"class":1104},[465,3453,3454],{"class":496}," beneficiary ",[465,3456,3434],{"class":471},[465,3458,1057],{"class":471},[465,3460,2134],{"class":1060},[465,3462,1064],{"class":471},[465,3464,1067],{"class":471},[465,3466,3467],{"class":467,"line":537},[465,3468,1099],{"emptyLinePlaceholder":1098},[465,3470,3471],{"class":467,"line":553},[465,3472,3473],{"class":503},"\u002F\u002F Get factory contract instance\n",[465,3475,3476,3478,3481,3483,3485,3487],{"class":467,"line":568},[465,3477,3428],{"class":1104},[465,3479,3480],{"class":496}," factoryContract ",[465,3482,3434],{"class":471},[465,3484,1048],{"class":1111},[465,3486,1139],{"class":496},[465,3488,472],{"class":471},[465,3490,3491,3494],{"class":467,"line":583},[465,3492,3493],{"class":496},"  client",[465,3495,1149],{"class":471},[465,3497,3498,3501,3503,3505,3507],{"class":467,"line":598},[465,3499,3500],{"class":1138},"  chain",[465,3502,482],{"class":471},[465,3504,1160],{"class":1159},[465,3506,500],{"class":471},[465,3508,1165],{"class":503},[465,3510,3511,3513,3515,3518],{"class":467,"line":613},[465,3512,679],{"class":1138},[465,3514,482],{"class":471},[465,3516,3517],{"class":496}," factoryAddress",[465,3519,1149],{"class":471},[465,3521,3522,3525,3527],{"class":467,"line":619},[465,3523,3524],{"class":471},"}",[465,3526,367],{"class":496},[465,3528,1067],{"class":471},[465,3530,3531],{"class":467,"line":625},[465,3532,1099],{"emptyLinePlaceholder":1098},[465,3534,3535],{"class":467,"line":640},[465,3536,3537],{"class":503},"\u002F\u002F Call the function\n",[465,3539,3540,3542,3545,3547,3549,3551,3553,3555,3557],{"class":467,"line":655},[465,3541,3428],{"class":1104},[465,3543,3544],{"class":496}," vestingWallets ",[465,3546,3434],{"class":471},[465,3548,1207],{"class":1041},[465,3550,2672],{"class":496},[465,3552,1212],{"class":471},[465,3554,1215],{"class":1111},[465,3556,1139],{"class":496},[465,3558,472],{"class":471},[465,3560,3561,3564,3566,3568,3570,3572],{"class":467,"line":860},[465,3562,3563],{"class":1138},"  functionName",[465,3565,482],{"class":471},[465,3567,1057],{"class":471},[465,3569,3213],{"class":1060},[465,3571,1064],{"class":471},[465,3573,1149],{"class":471},[465,3575,3576,3578,3580,3583],{"class":467,"line":875},[465,3577,722],{"class":1138},[465,3579,482],{"class":471},[465,3581,3582],{"class":496}," [beneficiary]",[465,3584,1149],{"class":471},[465,3586,3587,3589,3591],{"class":467,"line":881},[465,3588,3524],{"class":471},[465,3590,367],{"class":496},[465,3592,1067],{"class":471},[465,3594,3595],{"class":467,"line":886},[465,3596,1099],{"emptyLinePlaceholder":1098},[465,3598,3599],{"class":467,"line":901},[465,3600,3601],{"class":503},"\u002F\u002F Returns array of vesting wallet instances for this beneficiary\n",[465,3603,3604,3607,3609,3611,3614],{"class":467,"line":916},[465,3605,3606],{"class":496},"console",[465,3608,1212],{"class":471},[465,3610,3298],{"class":1111},[465,3612,3613],{"class":496},"(vestingWallets)",[465,3615,1067],{"class":471},[326,3617,3618],{},[332,3619,3620],{},"Finalize Configuration (Owner Only)",[388,3622,3624],{"className":459,"code":3623,"language":461,"meta":396,"style":396},"import { getContract } from \"thirdweb\";\nimport { prepareContractCall, sendTransaction } from \"thirdweb\";\n\n\u002F\u002F Get vesting wallet contract instance\nconst contract = getContract({\n  client,\n  chain: 56, \u002F\u002F BSC\n  address: vestingWalletAddress,\n});\n\n\u002F\u002F Before releasing tokens, owner must finalize the configuration\nconst owner = await contract.call({\n  functionName: \"owner\",\n});\n\nif (owner !== currentAddress) {\n  throw new Error(\"Unauthorized: Only owner can finalize\");\n}\n\n\u002F\u002F Check if already finalized\nconst isFinalized = await contract.call({\n  functionName: \"tranchesConfigurationFinalized\",\n});\n\nif (!isFinalized) {\n  \u002F\u002F Prepare finalization transaction\n  \u002F\u002F This will fail if TGE + linear + tranches != totalAllocation\n  const transaction = prepareContractCall({\n    contract,\n    method: \"function finalizeTranchesConfiguration()\",\n  });\n\n  \u002F\u002F Send transaction\n  await sendTransaction({\n    transaction,\n    account,\n  });\n}\n",[337,3625,3626,3646,3670,3674,3679,3694,3700,3712,3722,3730,3734,3739,3760,3774,3782,3786,3802,3823,3827,3831,3836,3857,3871,3879,3883,3896,3901,3906,3920,3926,3940,3948,3952,3957,3967,3973,3979,3987],{"__ignoreMap":396},[465,3627,3628,3630,3632,3634,3636,3638,3640,3642,3644],{"class":467,"line":468},[465,3629,1042],{"class":1041},[465,3631,1045],{"class":471},[465,3633,1048],{"class":496},[465,3635,1051],{"class":471},[465,3637,1054],{"class":1041},[465,3639,1057],{"class":471},[465,3641,1061],{"class":1060},[465,3643,1064],{"class":471},[465,3645,1067],{"class":471},[465,3647,3648,3650,3652,3654,3656,3658,3660,3662,3664,3666,3668],{"class":467,"line":475},[465,3649,1042],{"class":1041},[465,3651,1045],{"class":471},[465,3653,1076],{"class":496},[465,3655,500],{"class":471},[465,3657,1081],{"class":496},[465,3659,1051],{"class":471},[465,3661,1054],{"class":1041},[465,3663,1057],{"class":471},[465,3665,1061],{"class":1060},[465,3667,1064],{"class":471},[465,3669,1067],{"class":471},[465,3671,3672],{"class":467,"line":488},[465,3673,1099],{"emptyLinePlaceholder":1098},[465,3675,3676],{"class":467,"line":507},[465,3677,3678],{"class":503},"\u002F\u002F Get vesting wallet contract instance\n",[465,3680,3681,3683,3686,3688,3690,3692],{"class":467,"line":522},[465,3682,3428],{"class":1104},[465,3684,3685],{"class":496}," contract ",[465,3687,3434],{"class":471},[465,3689,1048],{"class":1111},[465,3691,1139],{"class":496},[465,3693,472],{"class":471},[465,3695,3696,3698],{"class":467,"line":537},[465,3697,3493],{"class":496},[465,3699,1149],{"class":471},[465,3701,3702,3704,3706,3708,3710],{"class":467,"line":553},[465,3703,3500],{"class":1138},[465,3705,482],{"class":471},[465,3707,1160],{"class":1159},[465,3709,500],{"class":471},[465,3711,1165],{"class":503},[465,3713,3714,3716,3718,3720],{"class":467,"line":568},[465,3715,679],{"class":1138},[465,3717,482],{"class":471},[465,3719,1175],{"class":496},[465,3721,1149],{"class":471},[465,3723,3724,3726,3728],{"class":467,"line":583},[465,3725,3524],{"class":471},[465,3727,367],{"class":496},[465,3729,1067],{"class":471},[465,3731,3732],{"class":467,"line":598},[465,3733,1099],{"emptyLinePlaceholder":1098},[465,3735,3736],{"class":467,"line":613},[465,3737,3738],{"class":503},"\u002F\u002F Before releasing tokens, owner must finalize the configuration\n",[465,3740,3741,3743,3746,3748,3750,3752,3754,3756,3758],{"class":467,"line":619},[465,3742,3428],{"class":1104},[465,3744,3745],{"class":496}," owner ",[465,3747,3434],{"class":471},[465,3749,1207],{"class":1041},[465,3751,1130],{"class":496},[465,3753,1212],{"class":471},[465,3755,1215],{"class":1111},[465,3757,1139],{"class":496},[465,3759,472],{"class":471},[465,3761,3762,3764,3766,3768,3770,3772],{"class":467,"line":625},[465,3763,3563],{"class":1138},[465,3765,482],{"class":471},[465,3767,1057],{"class":471},[465,3769,1231],{"class":1060},[465,3771,1064],{"class":471},[465,3773,1149],{"class":471},[465,3775,3776,3778,3780],{"class":467,"line":640},[465,3777,3524],{"class":471},[465,3779,367],{"class":496},[465,3781,1067],{"class":471},[465,3783,3784],{"class":467,"line":655},[465,3785,1099],{"emptyLinePlaceholder":1098},[465,3787,3788,3791,3794,3797,3800],{"class":467,"line":860},[465,3789,3790],{"class":1041},"if",[465,3792,3793],{"class":496}," (owner ",[465,3795,3796],{"class":471},"!==",[465,3798,3799],{"class":496}," currentAddress) ",[465,3801,472],{"class":471},[465,3803,3804,3807,3809,3811,3813,3815,3817,3819,3821],{"class":467,"line":875},[465,3805,3806],{"class":1041},"  throw",[465,3808,1276],{"class":471},[465,3810,1279],{"class":1111},[465,3812,1139],{"class":1138},[465,3814,1064],{"class":471},[465,3816,1286],{"class":1060},[465,3818,1064],{"class":471},[465,3820,367],{"class":1138},[465,3822,1067],{"class":471},[465,3824,3825],{"class":467,"line":881},[465,3826,658],{"class":471},[465,3828,3829],{"class":467,"line":886},[465,3830,1099],{"emptyLinePlaceholder":1098},[465,3832,3833],{"class":467,"line":901},[465,3834,3835],{"class":503},"\u002F\u002F Check if already finalized\n",[465,3837,3838,3840,3843,3845,3847,3849,3851,3853,3855],{"class":467,"line":916},[465,3839,3428],{"class":1104},[465,3841,3842],{"class":496}," isFinalized ",[465,3844,3434],{"class":471},[465,3846,1207],{"class":1041},[465,3848,1130],{"class":496},[465,3850,1212],{"class":471},[465,3852,1215],{"class":1111},[465,3854,1139],{"class":496},[465,3856,472],{"class":471},[465,3858,3859,3861,3863,3865,3867,3869],{"class":467,"line":931},[465,3860,3563],{"class":1138},[465,3862,482],{"class":471},[465,3864,1057],{"class":471},[465,3866,1338],{"class":1060},[465,3868,1064],{"class":471},[465,3870,1149],{"class":471},[465,3872,3873,3875,3877],{"class":467,"line":937},[465,3874,3524],{"class":471},[465,3876,367],{"class":496},[465,3878,1067],{"class":471},[465,3880,3881],{"class":467,"line":943},[465,3882,1099],{"emptyLinePlaceholder":1098},[465,3884,3885,3887,3889,3891,3894],{"class":467,"line":958},[465,3886,3790],{"class":1041},[465,3888,1255],{"class":496},[465,3890,1364],{"class":471},[465,3892,3893],{"class":496},"isFinalized) ",[465,3895,472],{"class":471},[465,3897,3898],{"class":467,"line":1357},[465,3899,3900],{"class":503},"  \u002F\u002F Prepare finalization transaction\n",[465,3902,3903],{"class":467,"line":1374},[465,3904,3905],{"class":503},"  \u002F\u002F This will fail if TGE + linear + tranches != totalAllocation\n",[465,3907,3908,3910,3912,3914,3916,3918],{"class":467,"line":1380},[465,3909,1127],{"class":1104},[465,3911,1386],{"class":496},[465,3913,1133],{"class":471},[465,3915,1076],{"class":1111},[465,3917,1139],{"class":1138},[465,3919,472],{"class":471},[465,3921,3922,3924],{"class":467,"line":1397},[465,3923,1781],{"class":496},[465,3925,1149],{"class":471},[465,3927,3928,3930,3932,3934,3936,3938],{"class":467,"line":1405},[465,3929,1788],{"class":1138},[465,3931,482],{"class":471},[465,3933,1057],{"class":471},[465,3935,1415],{"class":1060},[465,3937,1064],{"class":471},[465,3939,1149],{"class":471},[465,3941,3942,3944,3946],{"class":467,"line":1422},[465,3943,1182],{"class":471},[465,3945,367],{"class":1138},[465,3947,1067],{"class":471},[465,3949,3950],{"class":467,"line":1432},[465,3951,1099],{"emptyLinePlaceholder":1098},[465,3953,3954],{"class":467,"line":1437},[465,3955,3956],{"class":503},"  \u002F\u002F Send transaction\n",[465,3958,3959,3961,3963,3965],{"class":467,"line":1449},[465,3960,1816],{"class":1041},[465,3962,1081],{"class":1111},[465,3964,1139],{"class":1138},[465,3966,472],{"class":471},[465,3968,3969,3971],{"class":467,"line":1457},[465,3970,1827],{"class":496},[465,3972,1149],{"class":471},[465,3974,3975,3977],{"class":467,"line":1465},[465,3976,1834],{"class":496},[465,3978,1149],{"class":471},[465,3980,3981,3983,3985],{"class":467,"line":1474},[465,3982,1182],{"class":471},[465,3984,367],{"class":1138},[465,3986,1067],{"class":471},[465,3988,3989],{"class":467,"line":1479},[465,3990,658],{"class":471},[326,3992,3993],{},[332,3994,1485],{},[388,3996,3998],{"className":459,"code":3997,"language":461,"meta":396,"style":396},"import { getContract } from \"thirdweb\";\nimport { prepareContractCall, sendTransaction } from \"thirdweb\";\n\n\u002F\u002F Get vesting wallet contract instance\nconst contract = getContract({\n  client,\n  chain: 56, \u002F\u002F BSC\n  address: vestingWalletAddress,\n});\n\n\u002F\u002F Verify finalization before release\nconst isFinalized = await contract.call({\n  functionName: \"tranchesConfigurationFinalized\",\n});\n\nif (!isFinalized) {\n  throw new Error(\"VestingNotFinalized: Configuration must be finalized first\");\n}\n\n\u002F\u002F Prepare release transaction\n\u002F\u002F IMPORTANT: Anyone can call release() - no owner privileges required\n\u002F\u002F The function only requires that the configuration is finalized\nconst transaction = prepareContractCall({\n  contract,\n  method: \"function release()\",\n});\n\n\u002F\u002F Send transaction\nawait sendTransaction({\n  transaction,\n  account,\n});\n",[337,3999,4000,4020,4044,4048,4052,4066,4072,4084,4094,4102,4106,4111,4131,4145,4153,4157,4169,4190,4194,4198,4203,4208,4213,4228,4235,4249,4257,4261,4266,4277,4284,4291],{"__ignoreMap":396},[465,4001,4002,4004,4006,4008,4010,4012,4014,4016,4018],{"class":467,"line":468},[465,4003,1042],{"class":1041},[465,4005,1045],{"class":471},[465,4007,1048],{"class":496},[465,4009,1051],{"class":471},[465,4011,1054],{"class":1041},[465,4013,1057],{"class":471},[465,4015,1061],{"class":1060},[465,4017,1064],{"class":471},[465,4019,1067],{"class":471},[465,4021,4022,4024,4026,4028,4030,4032,4034,4036,4038,4040,4042],{"class":467,"line":475},[465,4023,1042],{"class":1041},[465,4025,1045],{"class":471},[465,4027,1076],{"class":496},[465,4029,500],{"class":471},[465,4031,1081],{"class":496},[465,4033,1051],{"class":471},[465,4035,1054],{"class":1041},[465,4037,1057],{"class":471},[465,4039,1061],{"class":1060},[465,4041,1064],{"class":471},[465,4043,1067],{"class":471},[465,4045,4046],{"class":467,"line":488},[465,4047,1099],{"emptyLinePlaceholder":1098},[465,4049,4050],{"class":467,"line":507},[465,4051,3678],{"class":503},[465,4053,4054,4056,4058,4060,4062,4064],{"class":467,"line":522},[465,4055,3428],{"class":1104},[465,4057,3685],{"class":496},[465,4059,3434],{"class":471},[465,4061,1048],{"class":1111},[465,4063,1139],{"class":496},[465,4065,472],{"class":471},[465,4067,4068,4070],{"class":467,"line":537},[465,4069,3493],{"class":496},[465,4071,1149],{"class":471},[465,4073,4074,4076,4078,4080,4082],{"class":467,"line":553},[465,4075,3500],{"class":1138},[465,4077,482],{"class":471},[465,4079,1160],{"class":1159},[465,4081,500],{"class":471},[465,4083,1165],{"class":503},[465,4085,4086,4088,4090,4092],{"class":467,"line":568},[465,4087,679],{"class":1138},[465,4089,482],{"class":471},[465,4091,1175],{"class":496},[465,4093,1149],{"class":471},[465,4095,4096,4098,4100],{"class":467,"line":583},[465,4097,3524],{"class":471},[465,4099,367],{"class":496},[465,4101,1067],{"class":471},[465,4103,4104],{"class":467,"line":598},[465,4105,1099],{"emptyLinePlaceholder":1098},[465,4107,4108],{"class":467,"line":613},[465,4109,4110],{"class":503},"\u002F\u002F Verify finalization before release\n",[465,4112,4113,4115,4117,4119,4121,4123,4125,4127,4129],{"class":467,"line":619},[465,4114,3428],{"class":1104},[465,4116,3842],{"class":496},[465,4118,3434],{"class":471},[465,4120,1207],{"class":1041},[465,4122,1130],{"class":496},[465,4124,1212],{"class":471},[465,4126,1215],{"class":1111},[465,4128,1139],{"class":496},[465,4130,472],{"class":471},[465,4132,4133,4135,4137,4139,4141,4143],{"class":467,"line":625},[465,4134,3563],{"class":1138},[465,4136,482],{"class":471},[465,4138,1057],{"class":471},[465,4140,1338],{"class":1060},[465,4142,1064],{"class":471},[465,4144,1149],{"class":471},[465,4146,4147,4149,4151],{"class":467,"line":640},[465,4148,3524],{"class":471},[465,4150,367],{"class":496},[465,4152,1067],{"class":471},[465,4154,4155],{"class":467,"line":655},[465,4156,1099],{"emptyLinePlaceholder":1098},[465,4158,4159,4161,4163,4165,4167],{"class":467,"line":860},[465,4160,3790],{"class":1041},[465,4162,1255],{"class":496},[465,4164,1364],{"class":471},[465,4166,3893],{"class":496},[465,4168,472],{"class":471},[465,4170,4171,4173,4175,4177,4179,4181,4184,4186,4188],{"class":467,"line":875},[465,4172,3806],{"class":1041},[465,4174,1276],{"class":471},[465,4176,1279],{"class":1111},[465,4178,1139],{"class":1138},[465,4180,1064],{"class":471},[465,4182,4183],{"class":1060},"VestingNotFinalized: Configuration must be finalized first",[465,4185,1064],{"class":471},[465,4187,367],{"class":1138},[465,4189,1067],{"class":471},[465,4191,4192],{"class":467,"line":881},[465,4193,658],{"class":471},[465,4195,4196],{"class":467,"line":886},[465,4197,1099],{"emptyLinePlaceholder":1098},[465,4199,4200],{"class":467,"line":901},[465,4201,4202],{"class":503},"\u002F\u002F Prepare release transaction\n",[465,4204,4205],{"class":467,"line":916},[465,4206,4207],{"class":503},"\u002F\u002F IMPORTANT: Anyone can call release() - no owner privileges required\n",[465,4209,4210],{"class":467,"line":931},[465,4211,4212],{"class":503},"\u002F\u002F The function only requires that the configuration is finalized\n",[465,4214,4215,4217,4220,4222,4224,4226],{"class":467,"line":937},[465,4216,3428],{"class":1104},[465,4218,4219],{"class":496}," transaction ",[465,4221,3434],{"class":471},[465,4223,1076],{"class":1111},[465,4225,1139],{"class":496},[465,4227,472],{"class":471},[465,4229,4230,4233],{"class":467,"line":943},[465,4231,4232],{"class":496},"  contract",[465,4234,1149],{"class":471},[465,4236,4237,4239,4241,4243,4245,4247],{"class":467,"line":958},[465,4238,707],{"class":1138},[465,4240,482],{"class":471},[465,4242,1057],{"class":471},[465,4244,1795],{"class":1060},[465,4246,1064],{"class":471},[465,4248,1149],{"class":471},[465,4250,4251,4253,4255],{"class":467,"line":1357},[465,4252,3524],{"class":471},[465,4254,367],{"class":496},[465,4256,1067],{"class":471},[465,4258,4259],{"class":467,"line":1374},[465,4260,1099],{"emptyLinePlaceholder":1098},[465,4262,4263],{"class":467,"line":1380},[465,4264,4265],{"class":503},"\u002F\u002F Send transaction\n",[465,4267,4268,4271,4273,4275],{"class":467,"line":1397},[465,4269,4270],{"class":1041},"await",[465,4272,1081],{"class":1111},[465,4274,1139],{"class":496},[465,4276,472],{"class":471},[465,4278,4279,4282],{"class":467,"line":1405},[465,4280,4281],{"class":496},"  transaction",[465,4283,1149],{"class":471},[465,4285,4286,4289],{"class":467,"line":1422},[465,4287,4288],{"class":496},"  account",[465,4290,1149],{"class":471},[465,4292,4293,4295,4297],{"class":467,"line":1432},[465,4294,3524],{"class":471},[465,4296,367],{"class":496},[465,4298,1067],{"class":471},[403,4300,4302],{"id":4301},"errors","Errors",[326,4304,4305],{},"MCP tools return errors in the standard JSON format:",[388,4307,4309],{"className":666,"code":4308,"language":668,"meta":396,"style":396},"{\n  \"error\": \"UNAUTHORIZED\",\n  \"message\": \"Unauthorized: user session not found or expired.\"\n}\n",[337,4310,4311,4315,4336,4355],{"__ignoreMap":396},[465,4312,4313],{"class":467,"line":468},[465,4314,472],{"class":471},[465,4316,4317,4320,4323,4325,4327,4329,4332,4334],{"class":467,"line":475},[465,4318,4319],{"class":471},"  \"",[465,4321,4322],{"class":1104},"error",[465,4324,1064],{"class":471},[465,4326,482],{"class":471},[465,4328,1057],{"class":471},[465,4330,4331],{"class":1060},"UNAUTHORIZED",[465,4333,1064],{"class":471},[465,4335,1149],{"class":471},[465,4337,4338,4340,4343,4345,4347,4349,4352],{"class":467,"line":488},[465,4339,4319],{"class":471},[465,4341,4342],{"class":1104},"message",[465,4344,1064],{"class":471},[465,4346,482],{"class":471},[465,4348,1057],{"class":471},[465,4350,4351],{"class":1060},"Unauthorized: user session not found or expired.",[465,4353,4354],{"class":471},"\"\n",[465,4356,4357],{"class":467,"line":507},[465,4358,658],{"class":471},[322,4360,4362],{"id":4361},"common-error-codes","Common Error Codes",[403,4364,4366],{"id":4365},"mcp-tool-errors","MCP Tool Errors",[4368,4369,4370,4383],"table",{},[4371,4372,4373],"thead",{},[4374,4375,4376,4380],"tr",{},[4377,4378,4379],"th",{},"Code",[4377,4381,4382],{},"Description",[4384,4385,4386,4396,4406,4416,4426],"tbody",{},[4374,4387,4388,4393],{},[4389,4390,4391],"td",{},[337,4392,4331],{},[4389,4394,4395],{},"User session is missing or expired.",[4374,4397,4398,4403],{},[4389,4399,4400],{},[337,4401,4402],{},"INSUFFICIENT_ALLOWANCE",[4389,4404,4405],{},"Insufficient token approval for the factory contract.",[4374,4407,4408,4413],{},[4389,4409,4410],{},[337,4411,4412],{},"INVALID_SIGNATURE",[4389,4414,4415],{},"Signature verification failed.",[4374,4417,4418,4423],{},[4389,4419,4420],{},[337,4421,4422],{},"INVALID_INPUT",[4389,4424,4425],{},"Input parameters do not match schema (e.g., Zod validation failed).",[4374,4427,4428,4433],{},[4389,4429,4430],{},[337,4431,4432],{},"UNSUPPORTED_CHAIN",[4389,4434,4435],{},"Chain ID is not supported by MCP.",[403,4437,4439],{"id":4438},"contract-level-errors","Contract-Level Errors",[4368,4441,4442,4451],{},[4371,4443,4444],{},[4374,4445,4446,4449],{},[4377,4447,4448],{},"Error Code",[4377,4450,4382],{},[4384,4452,4453,4467,4481,4491,4501,4517,4532,4542,4552,4562],{},[4374,4454,4455,4460],{},[4389,4456,4457],{},[337,4458,4459],{},"NotEnoughFundsToVest()",[4389,4461,3345,4462,4464,4465,1212],{},[337,4463,436],{}," (msg.sender) does not have enough LONG tokens. Must have at least ",[337,4466,366],{},[4374,4468,4469,4474],{},[4389,4470,4471],{},[337,4472,4473],{},"VestingNotFinalized()",[4389,4475,4476,4477,4480],{},"Configuration has not been finalized. Call ",[337,4478,4479],{},"finalizeTranchesConfiguration()"," first (owner only).",[4374,4482,4483,4488],{},[4389,4484,4485],{},[337,4486,4487],{},"VestingFinalized()",[4389,4489,4490],{},"Configuration is already finalized and cannot be modified.",[4374,4492,4493,4498],{},[4389,4494,4495],{},[337,4496,4497],{},"Unauthorized()",[4389,4499,4500],{},"Caller is not the owner of the vesting wallet. Only owner can finalize or add tranches.",[4374,4502,4503,4508],{},[4389,4504,4505],{},[337,4506,4507],{},"AllocationNotBalanced()",[4389,4509,4510,4513,4514,4516],{},[337,4511,4512],{},"TGE + linear + tranches"," does not equal ",[337,4515,366],{},". Cannot finalize until balanced.",[4374,4518,4519,4524],{},[4389,4520,4521],{},[337,4522,4523],{},"OverAllocation()",[4389,4525,4526,4528,4529,4531],{},[337,4527,4512],{}," exceeds ",[337,4530,366],{},". Cannot add more tranches.",[4374,4533,4534,4539],{},[4389,4535,4536],{},[337,4537,4538],{},"NothingToRelease()",[4389,4540,4541],{},"No vested tokens are available to release at the current time.",[4374,4543,4544,4549],{},[4389,4545,4546],{},[337,4547,4548],{},"TrancheBeforeStart()",[4389,4550,4551],{},"Tranche timestamp is before the vesting start timestamp.",[4374,4553,4554,4559],{},[4389,4555,4556],{},[337,4557,4558],{},"TrancheAfterEnd()",[4389,4560,4561],{},"Tranche timestamp is after the vesting end timestamp.",[4374,4563,4564,4569],{},[4389,4565,4566],{},[337,4567,4568],{},"NonMonotonic()",[4389,4570,4571],{},"Tranche timestamps must be in non-decreasing order.",[322,4573,4575],{"id":4574},"important-notes","Important Notes",[4577,4578,4579,4600,4631,4637,4649,4673,4726,4738],"ol",{},[353,4580,4581,4584],{},[332,4582,4583],{},"Backend Signature, Frontend Execution:",[350,4585,4586,4589,4594,4597],{},[353,4587,4588],{},"The backend creates a signature for the vesting wallet deployment",[353,4590,4591,4592,367],{},"The transaction is executed on the frontend from the user's wallet (",[337,4593,436],{},[353,4595,4596],{},"The user's wallet must have tokens and approve the factory contract",[353,4598,4599],{},"This allows separation of concerns: backend handles authorization, frontend handles execution",[353,4601,4602,4605],{},[332,4603,4604],{},"Token Requirements:",[350,4606,4607,4613,4620,4626],{},[353,4608,3345,4609,3364,4611,440],{},[337,4610,436],{},[337,4612,366],{},[353,4614,3345,4615,4617,4618,373],{},[337,4616,436],{}," must approve the factory contract for ",[337,4619,366],{},[353,4621,4622,4623,4625],{},"Tokens are transferred from ",[337,4624,436],{}," to the vesting wallet during deployment",[353,4627,3345,4628,4630],{},[337,4629,436],{}," becomes the owner of the vesting wallet",[353,4632,4633,4636],{},[332,4634,4635],{},"Finalization Requirement:"," The vesting configuration must be finalized before tokens can be released. This is a one-time operation that makes the schedule immutable.",[353,4638,4639,4641,4642,4645,4646,4648],{},[332,4640,3378],{}," The sum of ",[337,4643,4644],{},"tgeAmount + linearAllocation + tranchesTotal"," must exactly equal ",[337,4647,366],{}," for finalization to succeed.",[353,4650,4651,4654],{},[332,4652,4653],{},"Owner vs Beneficiary:",[350,4655,4656,4664],{},[353,4657,4658,335,4661,4663],{},[332,4659,4660],{},"Owner:",[337,4662,436],{}," that deployed the vesting wallet. Only owner can finalize configuration and add tranches.",[353,4665,4666,4669,4670,4672],{},[332,4667,4668],{},"Beneficiary:"," The address that receives vested tokens when ",[337,4671,1522],{}," is called. Can be different from the owner.",[353,4674,4675,4678],{},[332,4676,4677],{},"Function Access Control:",[350,4679,4680,4704],{},[353,4681,4682,4685],{},[332,4683,4684],{},"Owner-only functions:",[350,4686,4687,4693,4699],{},[353,4688,4689,4692],{},[337,4690,4691],{},"addTranche()"," - Add a single tranche",[353,4694,4695,4698],{},[337,4696,4697],{},"addTranches()"," - Add multiple tranches",[353,4700,4701,4703],{},[337,4702,4479],{}," - Finalize the vesting configuration",[353,4705,4706,4709],{},[332,4707,4708],{},"Public functions (anyone can call):",[350,4710,4711,4716],{},[353,4712,4713,4715],{},[337,4714,1522],{}," - Release vested tokens to beneficiary (requires finalized configuration)",[353,4717,4718,4719,3334,4722,4725],{},"View functions (",[337,4720,4721],{},"vestedAmount()",[337,4723,4724],{},"releasable()",", etc.) - Read-only, anyone can call",[353,4727,4728,4731,4732,4737],{},[332,4729,4730],{},"Release Access:"," Once finalized, ",[332,4733,4734,4735],{},"anyone can call ",[337,4736,1522],{}," to transfer vested tokens to the beneficiary. The beneficiary does not need to call it themselves, and the owner is not required to trigger releases.",[353,4739,4740,4743],{},[332,4741,4742],{},"Tranches:"," Optional step-based vesting amounts that unlock at specific timestamps. Must be added before finalization.",[4745,4746,4747],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":396,"searchDepth":475,"depth":475,"links":4749},[4750,4751,4752,4755,4761,4765],{"id":324,"depth":475,"text":92},{"id":379,"depth":475,"text":380},{"id":401,"depth":475,"text":153,"children":4753},[4754],{"id":405,"depth":488,"text":406},{"id":986,"depth":475,"text":987,"children":4756},[4757,4758,4759,4760],{"id":993,"depth":488,"text":994},{"id":1484,"depth":488,"text":1485},{"id":1851,"depth":488,"text":1852},{"id":4301,"depth":488,"text":4302},{"id":4361,"depth":475,"text":4362,"children":4762},[4763,4764],{"id":4365,"depth":488,"text":4366},{"id":4438,"depth":488,"text":4439},{"id":4574,"depth":475,"text":4575},"End-to-end vesting operations for LONG tokens on EVM chains using MCP tools.","md",null,{},{"title":69,"icon":28},{"title":317,"description":4766},"SGHEeDHWx1Kte2QadETamFvldor_rQPw0o4Yan3EMGQ",[4774,4776],{"title":65,"path":66,"stem":67,"description":4775,"icon":49,"children":-1},"End-to-end NFT minting on Sui using MCP tools.",{"title":78,"path":79,"stem":80,"description":4777,"icon":81,"children":-1},"Guide for uploading media assets to NFT collections using MCP tools and APIs.",1785598153374]