Skip to main content
Use this page when wiring Arc to Signalite production.

Production endpoints

Server-side secret

Arc receives a Signalite partner API key out of band. Store it only on the Arc backend. Never ship the key in a mobile app, browser app, analytics event, crash log, or client config.

Mobile deposit flow

Arc should expose one app-level Deposit CTA. Do not make the user press a separate Approve button and then a separate Deposit button. If allowance is missing, approval is an internal wallet step inside the same guided deposit flow; once reusable allowance exists, later deposits should skip approval. Signalite Partner Actions start only after the user wallet owns HyperEVM USDC. If the user selects USDC on Ethereum, Arbitrum, Base, Optimism, Polygon, Avalanche, Solana, or another Relay-supported source, Arc must first use its Relay/funding flow to deliver USDC to the same user EVM wallet on HyperEVM. Then Arc creates the Signalite Partner Action for the actual received HyperEVM USDC amount.
  1. Arc mobile checks GET /api/v1/config and reads deposit.funding.destination and deposit.funding.sourceNetworks.
  2. If the selected source is not HyperEVM USDC, Arc uses Relay or its own funding rail to send USDC to the user’s HyperEVM EVM wallet.
  3. Arc waits until USDC.balanceOf(userWallet) on HyperEVM is at least the deposit amount Arc will pass to Signalite. Use the actual received amount, not the pre-bridge source amount.
  4. Arc mobile asks Arc backend to create a Signalite deposit action.
  5. Arc backend calls createPartnerDepositAction with a stable idempotencyKey.
  6. Signalite validates product readiness and sponsors HyperEVM HYPE if the user wallet needs gas.
  7. Arc backend returns the ordered wallet steps to mobile.
  8. Mobile signs/sends each step in order.
  9. If the step is an approval, mobile waits for the approval receipt, then verifies USDC.allowance(account, depositPipe) on HyperEVM chain 999 for the same wallet before refreshing into a deposit step.
  10. After the primary deposit tx is sent, mobile waits for a HyperEVM receipt and verifies it is the successful deposit tx.
  11. Arc backend calls submitPartnerAction only with the verified deposit tx hash.
  12. If Signalite returns status: "indexed", Arc can show deposit confirmed immediately because Signalite decoded the receipt into canonical activity. Do not wait for the minute cron indexer.
  13. If Signalite returns indexingPending: true, keep the processing screen open and poll getPartnerAction/bootstrap until the status advances.
  14. Arc consumes signed Signalite webhooks as hints, but polling remains the source of truth.
If a step has refreshQuoteAfterConfirm=true, recreate the action/quote only after that tx confirms and the Signalite vault allowance is at least the deposit amount. Do not ask the wallet to simulate/sign deposit while allowance is zero or stale. Critical submit rule:
  • Do not submit an approval tx hash.
  • Do not submit a Relay/funding tx hash.
  • Do not submit a wallet placeholder hash.
  • Do not submit any hash that eth_getTransactionReceipt cannot find on HyperEVM chain 999.
  • For deposits, the submitted hash must have a successful receipt and transaction target must equal the Signalite V2 depositPipe returned in Partner Action metadata and /api/v1/config.
  • If the refreshed Partner Action still contains an approval step, stop and show an approval/allowance pending state. Do not skip that approval and do not execute deposit from a stale action.
Arc’s GET /api/earn/signalite/actions/:id route must use Cache-Control: no-store and must not return conditional 304 responses. Polling needs a fresh JSON body with the current action status and step statuses. Fast path rule: source-chain funding and Signalite execution are separate. If the user starts from Base, Arbitrum, Ethereum, or Solana, Arc should finish the Relay/funding route first and wait until HyperEVM USDC is visible in the user’s wallet. Only then create/refresh the Signalite deposit action and execute the final HyperEVM DepositPipeUSDC transaction.

Gas model

Production uses server-side gas sponsorship inside authenticated Partner Actions. faucetEnabled=false on /api/v1/gas/status is expected. Arc should not ask normal deposit users to source HYPE manually before using the Partner Action flow. If gas sponsorship is disabled, unfunded, rate-limited, or unable to reach the wallet, Signalite fails action creation closed instead of returning wallet steps that cannot execute.

Webhook setup

Arc’s production receiver is deployed at:
The receiver verifies the raw request body with the Signalite HMAC headers and stores a short Redis audit marker for the most recent delivery. The signing secret is stored only in the Arc backend as SIGNALITE_WEBHOOK_SIGNING_SECRET. The Signalite partner webhook is currently configured for:
  • partner_action.created
  • partner_action.submitted
To inspect or re-apply the configuration:
Use PARTNER_WEBHOOK_ROTATE_SECRET=1 only when rotating the secret, then immediately update SIGNALITE_WEBHOOK_SIGNING_SECRET on the Arc backend before enabling delivery again. Signalite returns the signing secret only on create/rotate. Verify the raw request body with verifySignaliteWebhook from @arc/shlp-sdk/webhooks.

Product data Arc can show

Arc can use the bootstrap payload or SDK helpers to display:
  • current yield after fees
  • TVL
  • instant liquidity / idle USDC
  • HLP allocation and proof buckets
  • projected growth
  • APY/APR over time
  • user USDC, sHLP, allowance, activity, and redeem state

Cross-chain USDC funding contract

Arc users deposit USDC from many networks, but Signalite receives only HyperEVM USDC. The integration boundary is:
Use GET /api/v1/config as the source of truth:
Current production destination:
Supported first-class source examples include Ethereum, Arbitrum, Base, Optimism, Polygon, Avalanche, and Solana USDC. For EVM sources, Arc can use a Viem Relay wallet adapter. For Solana, use Relay’s SVM/Solana wallet adapter and settle the Relay output to the user’s associated EVM wallet on HyperEVM. Do not call submitPartnerAction with Relay transaction hashes. The submitted hash must be the final Signalite V2 pipe transaction on HyperEVM.

Cross-chain withdrawal receive contract

Signalite withdraw and claim wallet transactions execute on HyperEVM. Arc can let a user choose a final receive chain by passing receiveChainId; for non-HyperEVM destinations Signalite attaches a Relay deposit address only when the current action can route assets now. Instant redeem and claim can include a Relay deposit address. Queued redeem does not; it stores the destination and quotes Relay later during claim. Read supported destinations from:
When Arc creates a withdrawal Partner Action, pass the selected destination:
Use the same field for queued redeem and later claim:
For a non-HyperEVM destination, action.metadata.withdrawal tells Arc:
  • the user’s requested destination
  • the HyperEVM settlement chain
  • whether Relay is required now or later
  • for redeem_instant and claim_redeem: the Relay deposit address used as the Signalite tx receiver, plus the Relay requestId / statusUrl
  • for redeem_async: postSettlementBridge.mode="post-claim-quote" and postSettlementBridge.relay=null; this is expected and must not be treated as missing bridge metadata
Arc must persist the selected destination for queued redeems and pass the same receiveChainId again at claim time. Do not make the user sign a separate USDC approval or Relay bridge deposit after the Signalite withdrawal. Do not submit Relay bridge hashes, destination-chain hashes, or cross-chain funding hashes to Signalite. Queued withdraws are FIFO. If an older 20 USDC queued request exists and the buffer currently has 6 USDC, a later 2 USDC request remains pending until the older request can be fulfilled or cancelled. Do not build Arc UI or keeper logic that skips the queue.

GetArc agent prompt

Use this copy-paste prompt when handing the implementation to a GetArc coding agent:

Release checks

Before enabling production traffic, Signalite should show:
Strict readiness is the launch gate. It must return verdict=ready, zero warnings, and zero blockers before Arc enables production traffic.