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

# التعدين والزراعة

> من NFTM إلى DA في خطوتين.

export const MiningPipeline = () => {
  const [selectedLevel, setSelectedLevel] = useState(5);
  const LEVELS = {
    5: {
      name: 'HYDRO',
      price: 550,
      days: 45,
      c1: 0.10,
      c2: 0,
      cycles: 1
    },
    6: {
      name: 'QUANTUM',
      price: 1100,
      days: 44,
      c1: 0.10,
      c2: 0,
      cycles: 1
    },
    7: {
      name: 'PULSE',
      price: 2200,
      days: 43,
      c1: 0.10,
      c2: 0,
      cycles: 1
    },
    8: {
      name: 'AURORA',
      price: 5500,
      days: 42,
      c1: 0.10,
      c2: 0.15,
      cycles: 2
    },
    9: {
      name: 'FLAME',
      price: 11000,
      days: 41,
      c1: 0.10,
      c2: 0.15,
      cycles: 2
    },
    10: {
      name: 'INFINITY',
      price: 24000,
      days: 40,
      c1: 0.10,
      c2: 0.15,
      cycles: 2
    }
  };
  const fmtUsd = function (n) {
    var digits = Math.abs(n) >= 10000 ? 0 : 2;
    return new Intl.NumberFormat('en-US', {
      style: 'currency',
      currency: 'USD',
      maximumFractionDigits: digits
    }).format(n);
  };
  var fmtNum = function (n) {
    return new Intl.NumberFormat('en-US').format(Math.round(n));
  };
  var lvl = LEVELS[selectedLevel];
  var nftmCycle1 = lvl.price * lvl.c1;
  var nftmCycle2 = lvl.price * lvl.c2;
  var totalNftm = nftmCycle1 + nftmCycle2;
  var totalDays = lvl.days * 2 * lvl.cycles;
  var daPrice = 1.00;
  var daReceived = totalNftm / daPrice;
  return <div style={{
    backgroundColor: '#000000',
    color: '#FFFFFF',
    border: '1px solid rgba(255,255,255,0.05)'
  }} className="p-6 rounded-xl not-prose">

      {}
      <div className="flex flex-col sm:flex-row sm:items-center justify-between gap-4 mb-6">
        <div>
          <h3 style={{
    color: '#FFFFFF',
    margin: 0
  }} className="text-lg font-serif italic">Mining Dashboard</h3>
          <p style={{
    color: 'rgba(255,255,255,0.4)',
    margin: '4px 0 0 0'
  }} className="text-xs">Full pipeline overview — from NFT purchase to DA harvest</p>
        </div>
        <div className="flex items-center gap-3">
          <select value={selectedLevel} onChange={function (e) {
    setSelectedLevel(Number(e.target.value));
  }} style={{
    backgroundColor: '#383838',
    color: '#FFFFFF',
    border: '1px solid rgba(255,255,255,0.1)',
    borderRadius: '8px',
    padding: '8px 12px',
    fontSize: '13px',
    cursor: 'pointer',
    outline: 'none'
  }}>
            {Object.entries(LEVELS).map(function (entry) {
    var k = entry[0];
    var d = entry[1];
    return <option key={k} value={k}>L{k} — {d.name} ({d.price} USDT) — {d.days} days</option>;
  })}
          </select>
          <span style={{
    color: 'rgba(255,255,255,0.6)',
    backgroundColor: 'rgba(255,255,255,0.1)',
    border: '1px solid rgba(255,255,255,0.2)',
    fontSize: '11px',
    padding: '4px 12px',
    borderRadius: '9999px',
    fontWeight: 500
  }}>Interactive</span>
        </div>
      </div>

      {}
      <div className="mb-6">
        <div className="flex justify-between items-center mb-2">
          <span style={{
    color: 'rgba(255,255,255,0.5)'
  }} className="text-xs font-medium">Total Pipeline</span>
          <span style={{
    color: '#FFFFFF'
  }} className="text-sm font-bold">{totalDays} days</span>
        </div>

        <div className="flex items-center gap-0.5" style={{
    height: '48px',
    borderRadius: '12px',
    overflow: 'hidden'
  }}>
          <div style={{
    backgroundColor: 'rgba(255,255,255,0.18)',
    width: '48%',
    height: '100%',
    display: 'flex',
    alignItems: 'center',
    justifyContent: 'center',
    borderTopLeftRadius: '12px',
    borderBottomLeftRadius: '12px'
  }}>
            <div style={{
    textAlign: 'center'
  }}>
              <div style={{
    color: '#FFFFFF',
    fontSize: '12px',
    fontWeight: 700
  }}>Mining</div>
              <div style={{
    color: 'rgba(255,255,255,0.5)',
    fontSize: '10px'
  }}>
                {lvl.cycles === 1 ? lvl.days + ' days' : '2 × ' + lvl.days + ' days'} — {fmtNum(totalNftm)} NFTM
              </div>
            </div>
          </div>
          <div style={{
    backgroundColor: '#ef4444',
    width: '4%',
    height: '100%',
    display: 'flex',
    alignItems: 'center',
    justifyContent: 'center'
  }}>
            <div style={{
    color: '#FFFFFF',
    fontSize: '9px',
    fontWeight: 900
  }}>72h</div>
          </div>
          <div style={{
    backgroundColor: 'rgba(255,255,255,0.08)',
    width: '48%',
    height: '100%',
    display: 'flex',
    alignItems: 'center',
    justifyContent: 'center',
    borderTopRightRadius: '12px',
    borderBottomRightRadius: '12px'
  }}>
            <div style={{
    textAlign: 'center'
  }}>
              <div style={{
    color: '#FFFFFF',
    fontSize: '12px',
    fontWeight: 700
  }}>Farming</div>
              <div style={{
    color: 'rgba(255,255,255,0.5)',
    fontSize: '10px'
  }}>{lvl.cycles === 1 ? lvl.days + ' days' : '2 × ' + lvl.days + ' days'} — {fmtNum(daReceived)} DA</div>
            </div>
          </div>
        </div>

        <div className="flex items-center gap-2 mt-2">
          <span className="relative flex" style={{
    height: '8px',
    width: '8px'
  }}>
            <span className="animate-ping absolute inline-flex rounded-full" style={{
    height: '100%',
    width: '100%',
    backgroundColor: '#ef4444',
    opacity: 0.75
  }} />
            <span className="relative inline-flex rounded-full" style={{
    height: '8px',
    width: '8px',
    backgroundColor: '#ef4444'
  }} />
          </span>
          <span style={{
    color: '#f87171',
    fontSize: '11px',
    fontWeight: 500
  }}>72-hour critical window — miss it and the entire cycle restarts from scratch</span>
        </div>
      </div>

      {}
      <div className="mb-6" style={{
    display: 'flex',
    flexWrap: 'wrap',
    gap: '16px',
    alignItems: 'center'
  }}>
        {}
        <div style={{
    flexShrink: 0,
    display: 'flex',
    justifyContent: 'center'
  }} className="w-[160px] sm:w-[140px] mx-auto sm:mx-0">
          <video autoPlay muted loop playsInline style={{
    borderRadius: '12px',
    objectFit: 'cover'
  }} className="w-[160px] h-[160px] sm:w-[140px] sm:h-[140px]">
            <source src="/NFTMp.webm" type="video/webm" />
          </video>
        </div>
        {}
        <div style={{
    flex: '1 1 0%',
    minWidth: '240px'
  }}>
          <div style={{
    backgroundColor: '#383838',
    border: '1px solid rgba(255,255,255,0.05)'
  }} className="rounded-xl p-5 text-center">
            <div style={{
    color: 'rgba(255,255,255,0.4)'
  }} className="text-[10px] uppercase tracking-wider mb-1">
              You Receive After {totalDays} days
            </div>
            <div style={{
    color: '#FFFFFF',
    fontSize: '36px'
  }} className="font-black">
              {fmtNum(daReceived)} DA
            </div>
            <div style={{
    color: 'rgba(255,255,255,0.5)'
  }} className="text-xs mt-1">
              Worth {fmtUsd(daReceived * daPrice)} at current DA price
            </div>
            <div style={{
    color: 'rgba(255,255,255,0.5)'
  }} className="text-xs mt-2">
              from {fmtUsd(lvl.price)} investment · {lvl.cycles === 1 ? 'cycle 1: ' + fmtNum(nftmCycle1) + ' NFTM' : 'cycle 1: ' + fmtNum(nftmCycle1) + ' + cycle 2: ' + fmtNum(nftmCycle2) + ' NFTM'}
            </div>
          </div>
        </div>
      </div>
      <div className="grid grid-cols-3 gap-3" style={{
    marginTop: '12px'
  }}>
        <div style={{
    backgroundColor: '#383838',
    border: '1px solid rgba(255,255,255,0.05)'
  }} className="rounded-xl p-3 text-center">
          <div style={{
    color: 'rgba(255,255,255,0.4)'
  }} className="text-[10px] uppercase tracking-wider mb-1">Investment</div>
          <div style={{
    color: '#FFFFFF'
  }} className="text-base font-bold">{fmtUsd(lvl.price)}</div>
        </div>
        <div style={{
    backgroundColor: '#383838',
    border: '1px solid rgba(255,255,255,0.05)'
  }} className="rounded-xl p-3 text-center">
          <div style={{
    color: 'rgba(255,255,255,0.4)'
  }} className="text-[10px] uppercase tracking-wider mb-1">DA Value</div>
          <div style={{
    color: '#FFFFFF'
  }} className="text-base font-bold">{fmtUsd(daReceived * daPrice)}</div>
        </div>
        <div style={{
    backgroundColor: '#383838',
    border: '1px solid rgba(255,255,255,0.05)'
  }} className="rounded-xl p-3 text-center">
          <div style={{
    color: 'rgba(255,255,255,0.4)'
  }} className="text-[10px] uppercase tracking-wider mb-1">Pipeline</div>
          <div style={{
    color: '#FFFFFF'
  }} className="text-base font-bold">{totalDays} days</div>
        </div>
      </div>
      {lvl.cycles === 1 && <div style={{
    backgroundColor: 'rgba(255,255,255,0.05)',
    border: '1px solid rgba(255,255,255,0.15)',
    marginTop: '12px'
  }} className="rounded-xl p-4 text-center">
          <div style={{
    color: 'rgba(255,255,255,0.5)',
    fontSize: '12px'
  }}>
            This NFT tier has 1 mining cycle producing 10% of NFT price in NFTM.
          </div>
        </div>}
      <div style={{
    color: 'rgba(255,255,255,0.4)'
  }} className="text-xs text-center mt-3">
        Once harvested, compare your options on{' '}
        <a href={'/en/da-selling-lending'} style={{
    color: '#FFFFFF',
    textDecoration: 'underline'
  }}>
          Selling & Lending
        </a>
      </div>

    </div>;
};

للحصول على DA، يجب على المستخدمين المشاركة في عملية من خطوتين: التعدين والزراعة. فقط رموز NFT المميّزة (المستوى 5+) والنخبوية قادرة على ذلك.

<Info>
  **NFTM ليس رمزاً.** هو عدّاد تعدين داخلي (مقياس) يتتبّعه العقد الذكي. في الواجهة، ترى شريط تقدّم وكميّة NFTM المتوقَّعة. ليس لـ NFTM قيمة سوقية ولا يمكن تداوله أو تحويله — وهو موجود فقط لتثبيته في الزراعة وتحويله إلى DA.
</Info>

<Info>
  **حدّ الدخل النشط مطلوب للتعدين.** يتطلّب كلّ من التعدين والزراعة أن يكون لـ NFT المؤهَّل **حدّ دخل** غير صفري. إذا وصل حدّك إلى الصفر، فإنّ العقد الذكي سيرفض بدء دورة تعدين جديدة. لاستئناف التعدين، جدِّد أوّلاً حدّ دخلك — عبر نظام Autobuy 3/3، أو تجديد يدوي بنفس المستوى، أو ترقية إلى NFT من مستوى أعلى — ثمّ فعِّل الدورة التالية. حدّ الدخل هو شرط البوّابة؛ بدونه، لا يبدأ تدفّق التعدين.
</Info>

<Steps>
  <Step title="تفعيل التعدين">
    ابدأ التعدين على NFT المؤهَّل لديك. مدّة الدورة تعتمد على مستواك — من 45 يوماً (HYDRO) إلى 40 يوماً (INFINITY).
  </Step>

  <Step title="توليد NFTM">
    يولّد NFT الخاص بك NFTM خلال فترة الدورة. المستويات 5–7 (HYDRO، QUANTUM، PULSE) لديها **دورة تعدين واحدة** تُنتج **10%** من سعر الـ NFT بصيغة NFTM. المستويات 8–10 (AURORA، FLAME، INFINITY) لديها **دورتا تعدين** — الأولى تُنتج **10%** والثانية تُنتج **15%** من سعر الـ NFT بصيغة NFTM.
  </Step>

  <Step title="المطالبة خلال 72 ساعة">
    بمجرّد اكتمال التعدين، أمامك **72 ساعة** بالضبط لتثبيت NFTM في الزراعة. تجاوز هذه النافذة، وستبدأ من الصفر.
  </Step>

  <Step title="ازرع DA">
    يدخل NFTM المُثبَّت إلى الزراعة لنفس مدّة دورة التعدين. في النهاية، يتحوّل NFTM إلى DA بناءً على السعر الحالي ويُضاف إلى TokenStack الخاص بك.
  </Step>
</Steps>

<Warning>
  **النافذة الحرجة 72 ساعة:** إذا فشلت في تثبيت NFTM خلال 72 ساعة بعد اكتمال التعدين، تُفقَد الدورة بالكامل. يجب أن تبدأ التعدين من الصفر. ضع تذكيراً.
</Warning>

<Warning>
  **اطلب مكافآتك قبل الترقية — مكافآت الزراعة غير المُطالَب بها تُتلَف:** أيّ شراء أو ترقية NFT يُفعِّل `terminate()` على حالة التعدين/الزراعة لدى المستخدم. حسب التصميم، يوقف `terminate()` الجلسة النشطة و**يُتلف جميع مكافآت الزراعة غير المُطالَب بها**، بما في ذلك المكافآت التي نضجت بالفعل لكن لم تُطالَب بعد. أكّد الفريق أنّ هذا متعمَّد في ردّ التدقيق: *"إنّه متعمَّد، يجب أن يُوقِف terminate() الجلسات النشطة ويُتلف المكافآت غير المُطالَب بها بحسب التصميم."*

  **القاعدة التشغيليّة:** إذا كانت لديك مكافأة زراعة ناضجة لكن غير مُطالَب بها، **اطلبها أوّلاً**، ثمّ اشترِ أو رقّ NFT الخاص بك. وإلا فستُفقَد المكافأة بشكل دائم لحظةَ تأكيد معاملة الـ NFT الجديدة.
</Warning>

<Warning>
  **توقّف الدورة الانكماشية:** مرّتين في السنة، يُفعِّل النظام دورة انكماشية تستمرّ حتى 30 يوماً. خلال هذه الفترة، يُعلَّق **بدء دورات جديدة** من تعدين NFTM والـ Staking وتوليد DA. الدورات التي تعمل بالفعل قبل بدء الدورة الانكماشية **تستمرّ وتُكمَل وفق الجدول** — لا يُفقَد التقدّم. خطّط لإطلاق دورات جديدة حول هذه الفترات المُجدوَلة.
</Warning>

<MiningPipeline />
