> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mobula.io/llms.txt
> Use this file to discover all available pages before exploring further.

# How to Integrate Printr on Robinhood Chain

> Complete Printr integration guide for Robinhood Chain: contracts, ABI, multi-chain bonding curve pricing, liquidity tracking, Telecoin graduation, migration, and token metadata.

# Printr Launchpad Integration on Robinhood Chain

Learn how to index and integrate the Printr launchpad on Robinhood Chain, including contract discovery, ABI events, token pricing, liquidity, bonding state, graduation, and metadata.
Integrate Printr multi-chain Telecoin bonding curves, trades, graduation, and metadata. This guide describes the public contract surface for an independent integration.

> Protocol reference: [https://printr.fun](https://printr.fun)

## Network and contracts

Unless another chain is listed, these addresses are for Robinhood Chain (`chainId 4663`). Verify proxy implementations and mutable configuration at the indexed block.

| Role                | Address                                      |
| ------------------- | -------------------------------------------- |
| Printr protocol     | `0xb77726291b125515d0a7affeea2b04f2ff243172` |
| Public launch token | `0x0bc0ce5c9e36c0ec914b2b6643f8b0f1a1b77777` |

## Market discovery and ABI

A Telecoin may have one curve per chain. Use `CurveCreated` to bind the token to `telecoinId`, base pair, virtual reserve, maximum supply, number of curves, and completion threshold. The token address is the curve identity on that chain.

### Relevant ABI

```solidity theme={null}
event CurveCreated(bytes32 indexed telecoinId,address indexed token,address basePair,uint256 maxTokenSupply,uint256 totalCurves,uint256 virtualReserve,uint256 completionThreshold);
event TokenTrade(bytes32 indexed telecoinId,address indexed token,address indexed trader,bool isBuy,uint256 tokenAmount,uint256 baseAmount,uint256 effectivePrice,uint256 issuedSupply,uint256 reserve);
event LiquidityDeployed(bytes32 indexed telecoinId,address indexed token,address pool,uint256 tokenAmount,uint256 baseAmount);
event TokenGraduated(bytes32 indexed telecoinId,address indexed token);
function getCurve(address token) view returns (address basePair,uint256 totalCurves,uint256 maxTokenSupply,uint256 virtualReserve,uint256 reserve,uint256 completionThreshold);
function getTelecoinId(address token) view returns (bytes32);
function treasury() view returns (address);
```

## Launchpad architecture and AMM model

Printr is a multi-chain token launchpad whose active launch phase uses a protocol-specific bonding curve rather than Uniswap v3 or v4. Printr adds Telecoin identity, cross-chain supply allocation, curve trading, graduation, and later deployment of liquidity to an external AMM.

**Classification: custom multi-chain bonding curve; not V3- or V4-like while active.** Pricing uses virtual quote reserve, real reserve, remaining curve inventory, issued supply, and a completion threshold. A later `LiquidityDeployed` event names the destination market, whose AMM type must be detected independently.

**Shared with Uniswap-style AMMs:** deterministic reserve-dependent pricing and explicit token/quote trade amounts. **Different from V3/V4:** no tick, `sqrtPriceX96`, PoolKey, or concentrated-liquidity state on the curve; Telecoin supply and progress are distributed across multiple chains.

## Price calculation

For a trade, `effectivePrice` is the authoritative execution/current price with 18-decimal scaling. For a snapshot, let `issued = completionThreshold - treasuryTokenBalance` and `remaining = completionThreshold - issued`; then spot price is `(virtualReserve + reserve) / remaining`, with base/token decimals applied.

## Liquidity tracking

The active curve quote liquidity is `reserve`; the virtual component is `virtualReserve`. Remaining curve inventory comes from treasury token balance. After `LiquidityDeployed`, track the emitted destination pool independently and do not count virtual reserve as withdrawable liquidity.

## Launchpad state, bonding, and migration

A zero `completionThreshold` indicates graduation. For an active multi-chain curve let `M = maxTokenSupply / totalCurves`, `G = completionThreshold × 10,000 / M`, and `R = reserve`, `V = virtualReserve`. Progress in basis points is `R × (10,000-G) × 10,000 / (V × G)`; divide by 100 for percent and clamp to \[0,100]. `LiquidityDeployed` or `TokenGraduated` is authoritative completion.

## Metadata

Resolve the Telecoin ID, then fetch its `metaURI`/protocol metadata. Expected fields include name, symbol, description, image, and external links (website, X/Twitter, Telegram). Use ERC-20 metadata as fallback and keep the Telecoin ID for cross-chain grouping.

## Indexing checklist

1. Index creation and bind the launched token to its canonical market.
2. Preserve on-chain token/currency order exactly.
3. Replay logs in block, transaction, and log-index order.
4. Keep raw integers until decimals are applied.
5. Treat graduation as protocol state, not a generic price shortcut.

## Historical indexing notes

Use block-scoped reads when initializing historical state. Do not mix `latest` reads into an old-block replay. Store launched-token identity separately from native pool ordering.

## Related Robinhood Chain launchpad integrations

* [NoxaFun launchpad integration on Robinhood Chain](/almanac/robinhood-launchpads/noxafun)
* [Bottom.fun launchpad integration on Robinhood Chain](/almanac/robinhood-launchpads/bottomfun)
* [Hood.fun launchpad integration on Robinhood Chain](/almanac/robinhood-launchpads/hoodfun)

For broader methodology, see [Bonding Curves Mathematics](/almanac/bonding-curves) and [Pricing Engine Deep Dive](/almanac/pricing-engine).
