# Staking Mechanism Service

Implements Lilith’s staking orchestration that rewards meditation practice by
tracking stake deposits, meditation contributions, reward accrual, withdrawals,
and governance tiering.

## Pipeline

1. **Tier evaluator** – determines reward multipliers and access perks per
   stake.
2. **Reward accrual engine** – compounds emissions based on stake + multiplier.
3. **Meditation contribution tracker** – captures meditation minutes for
   credits.
4. **Staking ledger** – persists stake state, emits audit events, delivers
   summary analytics.
5. **Reward distributor** – streams claimed rewards to stakers.
6. **Withdrawal processor** – initiates withdrawals to the network.
7. **Stake proof generator** – produces validator-signed proofs for frontends.

## Usage

```ts
import { createStakingService } from './service';

const service = createStakingService({
  tierEvaluator,
  rewardAccrualEngine,
  meditationContributionTracker,
  stakingLedger,
  rewardDistributor,
  withdrawalProcessor,
  stakeProofGenerator,
  rewardEmissionConfig: {
    emissionRatePerSecond: '1000000000000000000',
    compounding: true,
    maxDailyEmission: '86400000000000000000',
    rewardAssetSymbol: 'LILITH',
  },
});

const stake = await service.stake({
  address: '0xSeeker',
  chainId: 137,
  amount: '500000000000000000000',
  meditationContribution: {
    meditationId: 'med-ayan-333',
    durationMinutes: 45,
    completionTimestampIso: new Date().toISOString(),
    focus: 'Shadow integration',
  },
});
```

## Tests

```bash
npx jest --config apps/lilith/svc-staking-mechanism/jest.config.cjs --runInBand
```
