{"schemaVersion":"1","presale":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":32,"pattern":"^[\\p{L}\\p{N} .!_'-]+$"},"symbol":{"type":"string","minLength":2,"maxLength":10,"pattern":"^[A-Z0-9]+$"},"description":{"type":"string","minLength":10,"maxLength":500},"branding":{"type":"object","properties":{"logo":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-f0-9]{64}$"},"cid":{"type":"string"},"width":{"type":"integer","minimum":1,"maximum":4096},"height":{"type":"integer","minimum":1,"maximum":4096}},"required":["id","cid","width","height"],"additionalProperties":false},"banner":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-f0-9]{64}$"},"cid":{"type":"string"},"width":{"type":"integer","minimum":1,"maximum":4096},"height":{"type":"integer","minimum":1,"maximum":4096}},"required":["id","cid","width","height"],"additionalProperties":false},"socials":{"default":{"website":"","x":"","telegram":"","discord":"","github":""},"type":"object","properties":{"website":{"default":"","type":"string","maxLength":240},"x":{"default":"","type":"string","maxLength":240},"telegram":{"default":"","type":"string","maxLength":240},"discord":{"default":"","type":"string","maxLength":240},"github":{"default":"","type":"string","maxLength":240}},"additionalProperties":false}},"additionalProperties":false},"chain":{"type":"string","enum":["robinhood-testnet","robinhood-mainnet","ethereum-sepolia","ethereum-mainnet","base-sepolia","base-mainnet","polygon-amoy","polygon-mainnet","solana-devnet","solana-mainnet"]},"supply":{"type":"string","pattern":"^[1-9]\\d{0,11}$"},"tokensPerCoin":{"type":"string","pattern":"^[1-9]\\d{0,11}$"},"liquidity":{"type":"object","properties":{"protocol":{"type":"string","const":"uniswap-v4"},"tokensPerCoin":{"type":"string","pattern":"^[1-9]\\d{0,11}$"},"settlementHours":{"type":"integer","minimum":1,"maximum":720},"lockDays":{"type":"integer","minimum":1,"maximum":3650},"fallback":{"type":"object","properties":{"dex":{"type":"string","minLength":1,"maxLength":80},"delayMinutes":{"type":"integer","minimum":1,"maximum":43199}},"required":["dex","delayMinutes"],"additionalProperties":false},"routes":{"minItems":1,"maxItems":4,"type":"array","items":{"type":"object","properties":{"dex":{"type":"string","minLength":1,"maxLength":80},"bps":{"type":"integer","minimum":1,"maximum":10000}},"required":["dex","bps"],"additionalProperties":false}}},"required":["tokensPerCoin","settlementHours","lockDays","routes"],"additionalProperties":false},"pricing":{"type":"object","properties":{"mode":{"type":"string","enum":["time","raised","either"]},"stages":{"minItems":2,"maxItems":8,"type":"array","items":{"type":"object","properties":{"tokensPerCoin":{"type":"string","pattern":"^[1-9]\\d{0,11}$"},"end":{"type":"integer","minimum":1,"maximum":4102444800},"raised":{"type":"string","pattern":"^(0|[1-9]\\d{0,8})(\\.\\d{1,18})?$"}},"required":["tokensPerCoin","end","raised"],"additionalProperties":false}}},"required":["mode","stages"],"additionalProperties":false},"softCap":{"type":"string","pattern":"^(0|[1-9]\\d{0,8})(\\.\\d{1,18})?$"},"hardCap":{"type":"string","pattern":"^(0|[1-9]\\d{0,8})(\\.\\d{1,18})?$"},"start":{"type":"integer","minimum":1,"maximum":4102444800},"end":{"type":"integer","minimum":1,"maximum":4102444800},"vestingCliff":{"type":"integer","minimum":1,"maximum":4102444800},"vestingEnd":{"type":"integer","minimum":1,"maximum":4102444800}},"required":["name","symbol","description","chain","supply","tokensPerCoin","softCap","hardCap","start","end","vestingCliff","vestingEnd"],"additionalProperties":false},"token":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":32,"pattern":"^[\\p{L}\\p{N} .!_'-]+$"},"symbol":{"type":"string","minLength":2,"maxLength":10,"pattern":"^[A-Z0-9]+$"},"description":{"type":"string","minLength":10,"maxLength":500},"supply":{"type":"string","pattern":"^[1-9]\\d{0,11}$"},"decimals":{"type":"integer","minimum":0,"maximum":6},"transferFeeBps":{"type":"integer","minimum":0,"maximum":500},"chain":{"type":"string","const":"solana-devnet"},"branding":{"type":"object","properties":{"logo":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-f0-9]{64}$"},"cid":{"type":"string"},"width":{"type":"integer","minimum":1,"maximum":4096},"height":{"type":"integer","minimum":1,"maximum":4096}},"required":["id","cid","width","height"],"additionalProperties":false},"banner":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-f0-9]{64}$"},"cid":{"type":"string"},"width":{"type":"integer","minimum":1,"maximum":4096},"height":{"type":"integer","minimum":1,"maximum":4096}},"required":["id","cid","width","height"],"additionalProperties":false},"socials":{"default":{"website":"","x":"","telegram":"","discord":"","github":""},"type":"object","properties":{"website":{"default":"","type":"string","maxLength":240},"x":{"default":"","type":"string","maxLength":240},"telegram":{"default":"","type":"string","maxLength":240},"discord":{"default":"","type":"string","maxLength":240},"github":{"default":"","type":"string","maxLength":240}},"additionalProperties":false}},"additionalProperties":false},"options":{"type":"object","properties":{"version":{"type":"number","const":2},"maximumFee":{"type":"string","pattern":"^(0|[1-9]\\d{0,11})(\\.\\d{1,6})?$"},"feeAuthority":{"type":"string"},"initialBurn":{"type":"string","pattern":"^(0|[1-9]\\d{0,11})(\\.\\d{1,6})?$"},"plan":{"type":"object","properties":{"enabled":{"type":"boolean"},"allocations":{"type":"object","properties":{"presale":{"type":"integer","minimum":0,"maximum":10000},"liquidity":{"type":"integer","minimum":0,"maximum":10000},"team":{"type":"integer","minimum":0,"maximum":10000},"rewards":{"type":"integer","minimum":0,"maximum":10000}},"required":["presale","liquidity","team","rewards"],"additionalProperties":false},"teamCliffDays":{"type":"integer","minimum":0,"maximum":3650},"teamVestingDays":{"type":"integer","minimum":1,"maximum":3650},"presale":{"type":"object","properties":{"softCapSol":{"type":"string","pattern":"^(0|[1-9]\\d{0,5})(\\.\\d{1,9})?$"},"hardCapSol":{"type":"string","pattern":"^(0|[1-9]\\d{0,5})(\\.\\d{1,9})?$"},"minimumSol":{"type":"string","pattern":"^(0|[1-9]\\d{0,5})(\\.\\d{1,9})?$"},"walletMaximumSol":{"type":"string","pattern":"^(0|[1-9]\\d{0,5})(\\.\\d{1,9})?$"},"startDelayHours":{"type":"integer","minimum":1,"maximum":8760},"durationDays":{"type":"integer","minimum":1,"maximum":3650},"allowlist":{"maxItems":500,"type":"array","items":{"type":"string"}},"buyerCliffDays":{"type":"integer","minimum":0,"maximum":3650},"buyerVestingDays":{"type":"integer","minimum":0,"maximum":3650}},"required":["softCapSol","hardCapSol","minimumSol","walletMaximumSol","startDelayHours","durationDays","allowlist","buyerCliffDays","buyerVestingDays"],"additionalProperties":false},"liquidity":{"type":"object","properties":{"venue":{"type":"string","const":"raydium-cpmm"},"proceedsBps":{"type":"integer","minimum":0,"maximum":10000},"lockDays":{"type":"integer","minimum":1,"maximum":3650}},"required":["venue","proceedsBps","lockDays"],"additionalProperties":false},"scheduledBurn":{"type":"object","properties":{"enabled":{"type":"boolean"},"amount":{"type":"string","pattern":"^(0|[1-9]\\d{0,11})(\\.\\d{1,6})?$"},"afterDays":{"type":"integer","minimum":1,"maximum":3650}},"required":["enabled","amount","afterDays"],"additionalProperties":false},"feeBurnBps":{"type":"integer","minimum":0,"maximum":10000}},"required":["enabled","allocations","teamCliffDays","teamVestingDays","presale","liquidity","scheduledBurn","feeBurnBps"],"additionalProperties":false}},"required":["version","maximumFee","feeAuthority","initialBurn","plan"],"additionalProperties":false}},"required":["name","symbol","description","supply","decimals","transferFeeBps","chain"],"additionalProperties":false},"notes":["Amounts and rates are decimal strings, never floating point numbers. Dates are UTC Unix seconds.","JSON Schema covers field shapes. validate_presale also checks cross-field allocations, dates and template support."]}