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

# تعليمات Stable AMM

> مجموعة التعليمات القابلة للاستدعاء حاليًا — Deposit و Withdraw و SwapBaseIn و SwapBaseOut و WithdrawPnl — بالإضافة إلى التعليمات المحذوفة في ترقية 2026-06-22.

<Info>
  **هذه الصفحة مُترجَمة آليًا بواسطة الذكاء الاصطناعي. النسخة الإنجليزية هي المرجع المعتمد.**

  [عرض النسخة الإنجليزية →](/products/stable/instructions)
</Info>

<Info>
  Stable AMM هو **برنامج مستقل** بمعرّف برنامج خاص به. إنه **ليس** وضعًا من أوضاع برنامج AMM v4، وليس يتم التداول به "عبر" AMM v4 — بل يتم نشره وترقيته واستدعاؤه بشكل منفصل. يشبه AMM v4 فقط في اتفاقيات الرسوم وتخطيط الحسابات.
</Info>

<Warning>
  **ترقية 2026-06-22 — حذف كود OpenBook (السوق) الميت.** توقف Stable AMM عن **نشر الأوامر إلى OpenBook منذ وقت طويل**؛ مسار صنع السوق في دفتر الطلبات كان خاملاً لسنوات. تحذف هذه الترقية الحسابات والكود المتبقية المتعلقة بالسوق — إنها **لا تغير** سلوك التداول المباشر.

  نتيجتان للمدمجين:

  1. **تخطيطات حسابات أصغر.** `SwapBaseIn` / `SwapBaseOut` (**18 → 9**)، `Deposit` (**14 → 12**)، و `Withdraw` (**21/22 → 12**) تحذف حسابات Serum/السوق الميتة. التخطيطات القديمة لا تزال تُحلل للتوافقية العكسية. `WithdrawPnl` (**16 → 10**) هو **تغيير كسر صعب بدون مسار توافقية** (مسؤول فقط).
  2. **معظم التعليمات محذوفة.** فقط `SwapBaseIn` و `SwapBaseOut` و `Deposit` و `Withdraw` و `WithdrawPnl` تبقى قابلة للاستدعاء. لا يمكن استدعاء جميع التعليمات الأخرى.

  سجل التغييرات: [`reference/changelog`](/ar/reference/changelog).
</Warning>

## جرد التعليمات

### قابلة للاستدعاء

| التعليمة      | الفئة   | ملاحظات                                                                                             |
| ------------- | ------- | --------------------------------------------------------------------------------------------------- |
| `Deposit`     | السيولة | إضافة السيولة، استقبال LP. تخطيط جديد بـ 12 حساب؛ التخطيط القديم بـ 14 حساب لا يزال متوافقًا.       |
| `Withdraw`    | السيولة | حرق LP، استقبال الطرفين. تخطيط جديد بـ 12 حساب؛ التخطيط القديم بـ 21/22 حساب لا يزال متوافقًا.      |
| `SwapBaseIn`  | مبادلة  | مبادلة بمدخل دقيق. تخطيط جديد بـ 9 حسابات؛ التخطيط القديم بـ 18 حساب لا يزال متوافقًا.              |
| `SwapBaseOut` | مبادلة  | مبادلة بمخرج دقيق. تخطيط جديد بـ 9 حسابات؛ التخطيط القديم بـ 18 حساب لا يزال متوافقًا.              |
| `WithdrawPnl` | مسؤول   | مسح رسوم البروتوكول المتراكمة. تخطيط جديد بـ 10 حسابات (**كسر صعب — بدون توافقية التخطيط القديم**). |

### محذوفة (لا يمكن استدعاؤها)

تم حذفها في ترقية 2026-06-22 ولا يمكن استدعاؤها بعد الآن. انظر [التعليمات المحذوفة](#removed-instructions).

| التعليمة          | الفئة السابقة | الغرض السابق                             |
| ----------------- | ------------- | ---------------------------------------- |
| `Initialize`      | دورة الحياة   | إنشاء مجموعة.                            |
| `PreInitialize`   | دورة الحياة   | مساعد تخصيص مسبق قديم.                   |
| `InitModelData`   | إعداد النموذج | إنشاء وتهيئة جدول البحث.                 |
| `UpdateModelData` | إعداد النموذج | ملء ما يصل إلى 5 عناصر جدول لكل استدعاء. |
| `MonitorStep`     | كرنك          | تسوية ملء OpenBook، إعادة نشر الأوامر.   |
| `SetParams`       | مسؤول         | تغيير معاملات المجموعة.                  |
| `WithdrawSrm`     | قديم          | مسح استرجاع خصم رسوم SRM.                |
| `SimulateInfo`    | تشخيصي        | مساعد اقتباس للقراءة فقط.                |

## `Deposit`

إضافة السيولة، استقبال رموز LP.

**الحجج**

```
max_coin_amount: u64
max_pc_amount: u64
base_side: u64          // 0 = base on coin, 1 = base on pc
```

**الحسابات** — التخطيط الجديد، 12 حساب (قابل للكتابة `W`، موقّع `S`)

| #  | الاسم                | W | S | ملاحظات                   |
| -- | -------------------- | - | - | ------------------------- |
| 0  | `token_program`      |   |   | SPL Token.                |
| 1  | `amm`                | W |   | `AmmInfo` المجموعة.       |
| 2  | `amm_authority`      |   |   | PDA على مستوى البرنامج.   |
| 3  | `amm_target_orders`  | W |   |                           |
| 4  | `amm_lp_mint`        | W |   | عملة LP.                  |
| 5  | `amm_coin_vault`     | W |   | خزينة عملة المجموعة.      |
| 6  | `amm_pc_vault`       | W |   | خزينة pc المجموعة.        |
| 7  | `model_data_account` |   |   | **جدول بحث للقراءة فقط.** |
| 8  | `user_source_coin`   | W |   | مدخل عملة المستخدم.       |
| 9  | `user_source_pc`     | W |   | مدخل pc المستخدم.         |
| 10 | `user_dest_lp`       | W |   | ATA LP المستخدم.          |
| 11 | `user_source_owner`  |   | S | موقّع المعاملة.           |

**التوافقية**: تم حذف `amm_open_orders` (القديم #3) و `serum_market` (القديم #9). عند تمرير **14** حساب، يتم تحليل التعليمة بالتخطيط القديم بـ 14 حساب؛ يتم تجاهل حسابات Serum.

**الرياضيات** — نسبة قياسية باستخدام جدول البحث لحساب النسبة. يحسب SDK زوج عملة/pc للمبلغ المطلوب من LP ويتحقق من الحدود القصوى.

## `Withdraw`

حرق LP، استقبال الطرفين بنسبة.

**الحجج**

```
amount: u64            // رموز LP للحرق
```

**الحسابات** — التخطيط الجديد، 12 حساب (قابل للكتابة `W`، موقّع `S`)

| #  | الاسم                | W | S | ملاحظات                   |
| -- | -------------------- | - | - | ------------------------- |
| 0  | `token_program`      |   |   | SPL Token.                |
| 1  | `amm`                | W |   | `AmmInfo` المجموعة.       |
| 2  | `amm_authority`      |   |   | PDA على مستوى البرنامج.   |
| 3  | `amm_target_orders`  | W |   |                           |
| 4  | `amm_lp_mint`        | W |   | عملة LP.                  |
| 5  | `amm_coin_vault`     | W |   | خزينة عملة المجموعة.      |
| 6  | `amm_pc_vault`       | W |   | خزينة pc المجموعة.        |
| 7  | `model_data_account` |   |   | **جدول بحث للقراءة فقط.** |
| 8  | `user_source_lp`     | W |   | مصدر LP المستخدم.         |
| 9  | `user_dest_coin`     | W |   | مخرج عملة المستخدم.       |
| 10 | `user_dest_pc`       | W |   | مخرج pc المستخدم.         |
| 11 | `user_lp_owner`      |   | S | موقّع المعاملة.           |

**التوافقية**: تم حذف تسعة حسابات Serum (`amm_open_orders`، `serum_program`، `serum_market`، `serum_coin_vault`، `serum_pc_vault`، `serum_vault_signer`، `serum_event_q`، `serum_bids`، `serum_asks`). التخطيطات القديمة بـ **21** أو **22** حساب لا تزال مقبولة. لاحظ، مع ذلك، أن **منطق رسوم الإحالة لحساب `referrer_pc_wallet` الاختياري الـ 22 تم حذفه** — يمكن تمريره لكن لا يعود له تأثير.

**الشروط المسبقة**

* `user_source_lp` يحتفظ بـ `amount` على الأقل.

**الشروط اللاحقة**

* يتم حرق `amount` رموز LP.
* يستقبل المستخدم مبالغ عملة و pc وفقًا للنسبة الحالية، معدلة للرسوم المتراكمة.

## `SwapBaseIn`

مبادلة بمدخل دقيق باستخدام جدول البحث للتسعير.

**الحجج**

```
amount_in: u64
minimum_amount_out: u64
```

**الحسابات** — التخطيط الجديد، 9 حسابات (قابل للكتابة `W`، موقّع `S`)

| # | الاسم                    | W | S | ملاحظات                    |
| - | ------------------------ | - | - | -------------------------- |
| 0 | `spl_token program`      |   |   | SPL Token.                 |
| 1 | `amm`                    | W |   | `AmmInfo` المجموعة.        |
| 2 | `amm_authority`          |   |   | PDA على مستوى البرنامج.    |
| 3 | `amm_coin_vault`         | W |   | خزينة عملة المجموعة.       |
| 4 | `amm_pc_vault`           | W |   | خزينة pc المجموعة.         |
| 5 | `model_data_account`     |   |   | **جدول بحث للقراءة فقط.**  |
| 6 | `user_source_token`      | W |   | حساب رمز المدخل للمستخدم.  |
| 7 | `user_destination_token` | W |   | حساب رمز المخرج للمستخدم.  |
| 8 | `user_source_owner`      |   | S | المستخدم (موقّع المعاملة). |

**التوافقية**: تم حذف تسعة حسابات OpenBook (`amm_open_orders`، `serum_program`، `serum_market`، `serum_bids`، `serum_asks`، `serum_event_queue`، `serum_coin_vault`، `serum_pc_vault`، `serum_vault_signer`). إذا كان عدد الحسابات المُمررة **ليس 9**، يتم تحليل التعليمة بالتخطيط القديم بـ **18 حساب**؛ يجب أن تحتل حسابات Serum مواضعها، لكن محتوياتها لا تُتحقق أو تُستخدم بعد الآن.

**الشروط المسبقة**

* `amm.status` يسمح بالمبادلة.
* `user_source_token` يحتفظ بـ ≥ `amount_in`.

**الشروط اللاحقة**

* يفقد المستخدم `amount_in`، يكسب `amount_out ≥ minimum_amount_out`.
* رسوم المجموعة تزيد عدادات `need_take_pnl_*`.

**الرياضيات** — استيفاء جدول البحث كما هو موضح في [`products/stable/math`](/ar/products/stable/math).

## `SwapBaseOut`

مبادلة بمخرج دقيق (معكوس `SwapBaseIn`). نفس التخطيط بـ 9 حسابات، اتجاه رياضيات مختلف.

**الحجج**

```
max_amount_in: u64
amount_out: u64
```

## `WithdrawPnl`

مسؤول فقط. مسح رسوم البروتوكول المتراكمة من `need_take_pnl_*` إلى حسابات PnL المعينة.

<Warning>
  **تغيير كسر صعب — بدون مسار توافقية.** هذه التعليمة **لا تملك** تحليلاً للتخطيط القديم. إرسال التخطيط القديم يفشل مع أخطاء التحقق مثل `InvalidTokenCoin` بسبب عدم محاذاة الحسابات (القديم #3 كان `open_orders`). أدوات المسؤول التي تستدعي `WithdrawPnl` **يجب** تحديثها إلى التخطيط الجديد بـ 10 حسابات.
</Warning>

**الحجج** — لا توجد (مدفوعة بالحالة).

**الحسابات** — التخطيط الجديد، 10 حسابات ثابتة، مسؤول فقط (قابل للكتابة `W`، موقّع `S`)

| # | الاسم               | W | S | ملاحظات                           |
| - | ------------------- | - | - | --------------------------------- |
| 0 | `spl_token program` |   |   | SPL Token.                        |
| 1 | `amm`               | W |   | `AmmInfo` المجموعة.               |
| 2 | `amm_authority`     |   |   | PDA على مستوى البرنامج.           |
| 3 | `amm_coin_vault`    | W |   | خزينة عملة المجموعة.              |
| 4 | `amm_pc_vault`      | W |   | خزينة pc المجموعة.                |
| 5 | `amm_target_orders` | W |   |                                   |
| 6 | `model_data`        |   |   | جدول البحث.                       |
| 7 | `user_coin`         | W |   | حساب عملة المسؤول (يستقبل الرسم). |
| 8 | `user_pc`           | W |   | حساب pc المسؤول (يستقبل الرسم).   |
| 9 | `amm_admin`         |   | S | مسؤول المجموعة (موقّع).           |

**تغيير المنطق**: عندما تكون الأموال المتاحة للمجموعة غير كافية لسحب PnL المتراكم، المجموعة **لا تُوضع** في `CancelAllOrdersState` / `Disabled`؛ التعليمة تُرجع `TakePnlError` مباشرة. تم حذف `referrer_pc_wallet` الاختياري أيضًا.

**الشروط المسبقة**

* `amm_admin` يجب أن يكون مصرحًا.

**الشروط اللاحقة**

* يتم نقل `need_take_pnl_coin` و `need_take_pnl_pc` إلى حسابات المسؤول.
* يتم تصفير العدادات.

## التعليمات المحذوفة

تم حذف التعليمات التالية في ترقية 2026-06-22 و **لا يمكن استدعاؤها بعد الآن**. يتم توثيقها هنا فقط حتى يتمكن المدمجون من التعرف عليها في المعاملات والـ SDK التاريخية.

* **`Initialize`** — كانت تُقلع مجموعة Stable AMM جديدة سابقًا. محذوفة.
* **`PreInitialize`** — مساعد تخصيص مسبق قديم. محذوفة.
* **`InitModelData`** — كانت تُنشئ وتُهيّئ جدول البحث `ModelDataInfo` سابقًا. محذوفة.
* **`UpdateModelData`** — كانت تملأ ما يصل إلى 5 عناصر جدول بحث لكل استدعاء سابقًا. محذوفة.
* **`MonitorStep`** — كرنك OpenBook الذي سوّى الملء وأعاد نشر شبكة الأوامر. كانت خاملة بالفعل لفترة طويلة بعد توقف المجموعة عن النشر إلى OpenBook؛ الآن محذوفة.
* **`SetParams`** — تغييرات معاملات المسؤول (الحالة، الرسوم، المالك، مفتاح بيانات النموذج، إلخ). محذوفة.
* **`WithdrawSrm`** — مسح استرجاع خصم رسوم SRM من مجموعات حقبة Serum المبكرة. محذوفة.
* **`SimulateInfo`** — مساعد اقتباس للقراءة فقط. محذوفة؛ استخدم مساعدات منحنى Stable خارج السلسلة في SDK للاقتباس (انظر [عروض الكود](/ar/products/stable/code-demos)).

## الخطوات التالية

* [الحسابات](/ar/products/stable/accounts) — لتخطيطات وأحجام حقول الحسابات.
* [الرياضيات](/ar/products/stable/math) — لمنطق استيفاء جدول البحث.
* [عروض الكود](/ar/products/stable/code-demos) — لرؤية كيفية استدعاء هذه من SDK.

المصادر:

* `raydium-stable/program/src/instruction.rs` (enum و pack/unpack)
* `raydium-stable/program/src/processor.rs` (منطق التنفيذ)
