> ## 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.

# تعليمات LaunchLab

> Initialize، Buy، Sell، Graduate، CollectFees، SetParams — أشكال الحجج وقوائم الحسابات والشروط السابقة واللاحقة لكل تعليمة LaunchLab.

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

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

<Info>
  يكشف LaunchLab عن مجموعة تعليمات مشدودة: ستة استدعاءات موجهة للمستخدم بالإضافة إلى عدد قليل من البدائيات الإدارية. يغلف SDK جميعها؛ توثق هذه الصفحة السطح الخام للمُجمِّعات وأدوات المراقبة والبرامج التي تحتاج إلى CPI.
</Info>

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

| المجموعة          | التعليمة                                                   | يمكن استدعاؤها من قبل                                                                                                                                 |
| ----------------- | ---------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| الإعدادات العامة  | `CreateConfig` / `UpdateConfig`                            | المسؤول                                                                                                                                               |
| دورة حياة الإطلاق | `Initialize` / `InitializeV2`                              | أي شخص (المنشئ) — إطلاقات SPL Token؛ V2 يسجل `amm_creator_fee_on` للتخرج CPMM النهائي                                                                 |
| دورة حياة الإطلاق | `InitializeWithToken2022`                                  | أي شخص (المنشئ) — إطلاق Token-2022، `TransferFeeConfig` اختياري                                                                                       |
| التداول           | `BuyExactIn` / `BuyExactOut`                               | أي شخص — شراء الإدخال الدقيق / الإخراج الدقيق على منحنى الربط                                                                                         |
| التداول           | `SellExactIn` / `SellExactOut`                             | أي شخص — بيع الإدخال الدقيق / الإخراج الدقيق على منحنى الربط                                                                                          |
| التخرج            | `MigrateToAmm`                                             | محفظة الهجرة (مضبوطة على `GlobalConfig`) — التخرج إلى AMM v4. يُستخدم عندما `amm_creator_fee_on = BothToken` بحيث يمكن جمع رسوم المنشئ على أي جانب.   |
| التخرج            | `MigrateToCpswap`                                          | محفظة الهجرة — التخرج إلى CPMM. يُستخدم عندما `amm_creator_fee_on = QuoteToken` وضروري لإطلاقات Token-2022. يغلف `InitializeWithPermission` على CPMM. |
| الرسوم            | `CollectFee`                                               | المسؤول — مسح رسوم البروتوكول المتراكمة من إطلاق                                                                                                      |
| الرسوم            | `CollectMigrateFee`                                        | المسؤول — مسح رسوم الهجرة المتراكمة                                                                                                                   |
| الرسوم            | `ClaimCreatorFee`                                          | المنشئ — المطالبة برسوم المنشئ المتراكمة أثناء مرحلة المنحنى                                                                                          |
| الاستحقاق         | `CreateVestingAccount`                                     | المنشئ — تخصيص الرموز المقفولة لمستفيد، غير مقفول بعد التخرج                                                                                          |
| الاستحقاق         | `CreatePlatformVestingAccount`                             | مسؤول منصة — تخصيص الرموز المقفولة لمستفيدي جانب المنصة                                                                                               |
| الاستحقاق         | `ClaimVestedToken`                                         | المستفيد — المطالبة برموز غير مقفولة بعد الجرف                                                                                                        |
| إعدادات المنصة    | `CreatePlatformConfig` / `UpdatePlatformConfig`            | مسؤول منصة                                                                                                                                            |
| إعدادات المنصة    | `UpdatePlatformCurveParam` / `RemovePlatformCurveParam`    | مسؤول منصة — إدارة قائمة أشكال المنحنى المسموحة لكل منصة                                                                                              |
| رسوم المنصة       | `ClaimPlatformFee` / `ClaimPlatformFeeFromVault`           | مسؤول منصة                                                                                                                                            |
| وصول المنصة       | `CreatePlatformGlobalAccess` / `ClosePlatformGlobalAccess` | المسؤول — بوابة المنصات التي قد تستخدم `GlobalConfig` معين                                                                                            |

يعكس التقسيم "ExactIn/ExactOut" `SwapBaseInput` / `SwapBaseOutput` الخاص بـ CPMM — على السلسلة عبارة عن فاصلات تعليمات منفصلة بتقريب مختلف قليلاً.

**اختيار مسار التخرج.** يتم تسجيل `migrate_type` على `PoolState` في وقت `Initialize{V2,WithToken2022}` ويحدد أي من التعليمات الخريجين يمكن أن يعمل. تهاجر إطلاقات Token-2022 دائماً إلى CPMM. تهاجر إطلاقات SPL Token إلى AMM v4 أو CPMM اعتماداً على إعداد `amm_creator_fee_on`:

* `BothToken` → `MigrateToAmm` → مجموعة AMM v4 (يمكن جمع رسوم المنشئ من أي جانب؛ AMM v4 ليس لديه حقل رسوم منشئ أصلي، لذا يتم أخذ رسوم المنشئ عبر آلية قفل LP NFT بدلاً من ذلك).
* `QuoteToken` → `MigrateToCpswap` → مجموعة CPMM مع `creator_fee_on = OnlyQuoteToken` (يستمر المنشئ في كسب الرسوم من مجموعة CPMM من خلال LaunchLab Fee Key NFT — انظر [`products/launchlab/creator-fees`](/ar/products/launchlab/creator-fees)).

<Tip>
  **ملاحظة حول اسم enum `AmmCreatorFeeOn`.** يسمي المصدر Rust هذا enum `AmmCreatorFeeOn` مع variants `QuoteToken` و `BothToken`. الاسم مضلل: في الممارسة التشغيلية الحالية، لا يتحكم variant فقط في الجانب الذي يتم جمع رسوم المنشئ منه على مجموعة CPMM بعد التخرج — بل يختار أيضاً **برنامج الهدف** للتخرج (AMM v4 مقابل CPMM) ويقترن مع `migrate_type` على `PoolState` الخاص بالإطلاق. تعامل مع الحقل كـ "هدف الهجرة + جانب رسوم المنشئ بعد التخرج" مدمج في واحد. لم يتم إعادة تسمية enum على السلسلة، لكن التفكير فيه كـ `MigrationTarget` يطابق الواقع بشكل أوثق.
</Tip>

## `Initialize`

إنشاء إطلاق جديد.

**الحجج**

```
launch_params: {
    curve_type:                 u8,
    base_supply_max:            u64,
    base_supply_graduation:     u64,
    k:                          u128,              // or initial_virtual_quote_reserve for curve_type=1
    open_time:                  u64,
    quote_mint:                 Pubkey,
    base_token_metadata: {                         // inline name/symbol/uri; program CPIs to Metaplex
        name:   String,
        symbol: String,
        uri:    String,
    },
    fees: {
        buy_numerator:   u64,
        buy_denominator: u64,
        sell_numerator:  u64,
        sell_denominator: u64,
        lp_share:        u64,
        creator_share:   u64,
        protocol_share:  u64,
        total_share:     u64,
    },
    post_graduation_lp_policy:  u8,                // 0 = Burn, 1 = Lock, 2 = ToCreator
}
```

**الحسابات** (مختصرة)

| #  | الاسم              | W | S | الملاحظات                                          |
| -- | ------------------ | - | - | -------------------------------------------------- |
| 1  | `creator`          | W | S | يدفع الإيجار + إنشاء mint الأساس.                  |
| 2  | `launch_config`    |   |   | ربط إعدادات البروتوكول.                            |
| 3  | `launch_state`     | W |   | حساب جديد.                                         |
| 4  | `launch_authority` |   |   | PDA.                                               |
| 5  | `base_mint`        | W | S | Keypair جديد (أو PDA) — تقوم هذه التعليمة بتهيئته. |
| 6  | `base_vault`       | W |   | ATA من `launch_authority` على `base_mint`.         |
| 7  | `quote_mint`       |   |   |                                                    |
| 8  | `quote_vault`      | W |   | ATA من `launch_authority` على `quote_mint`.        |
| 9  | `metadata`         | W |   | Metaplex metadata PDA.                             |
| 10 | `metaplex_program` |   |   |                                                    |
| 11 | `token_program`    |   |   | SPL Token فقط.                                     |
| 12 | `system_program`   |   |   |                                                    |
| 13 | `rent`             |   |   |                                                    |

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

* `quote_mint ∈ launch_config.allowed_quote_mints`.
* `base_supply_graduation ≤ base_supply_max`.
* تمرير معاملات الرسوم فحوص `launch_config.max_*_fee_rate`.
* `open_time ≥ now − slop` (يفرض SDK `≥ now`؛ البرنامج يتسامح مع التاريخ المتأخر قليلاً).
* `curve_type` معترف به.

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

* يمتلك `base_mint` `supply = base_supply_max`، الكل في `base_vault`.
* `base_mint.mint_authority = launch_authority`، `freeze_authority = None`.
* تم تهيئة `LaunchState` مع `status = Active`، `base_sold = 0`، `quote_reserve_real = 0`.
* يتم حساب `quote_reserve_target` من معاملات المنحنى + `base_supply_graduation` + `buy_numerator` (تقريباً).

**الأخطاء الشائعة** — `InvalidQuoteMint`، `FeeRateTooHigh`، `InvalidCurveParams`، `MathOverflow`.

## `Buy` (المتغير الكنسي: `BuyExactIn`)

يوفر المستخدم `quote_in` محدد؛ يحسب المنحنى `base_out`.

**الحجج**

```
quote_in:          u64
minimum_base_out:  u64
```

**الحسابات**

| #  | الاسم                      | W | S |
| -- | -------------------------- | - | - |
| 1  | `user`                     | W | S |
| 2  | `launch_state`             | W |   |
| 3  | `launch_authority`         |   |   |
| 4  | `base_vault`               | W |   |
| 5  | `quote_vault`              | W |   |
| 6  | `user_base_ata`            | W |   |
| 7  | `user_quote_ata`           | W |   |
| 8  | `base_mint`                |   |   |
| 9  | `quote_mint`               |   |   |
| 10 | `token_program`            |   |   |
| 11 | `associated_token_program` |   |   |
| 12 | `system_program`           |   |   |

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

* `launch_state.status == Active`.
* `now ≥ open_time`.
* `user_quote_ata.balance ≥ quote_in`.
* `quote_in > 0`.

**التأثير**

1. قسّم `quote_in` إلى `quote_in_after_fee` وأجزاء الرسوم.
2. حل منحنى Newton للحصول على `base_out` من الحصة بعد الرسم.
3. `require(base_out ≥ minimum_base_out)` وإلا رجوع `ExceededSlippage`.
4. انقل `quote_in` من المستخدم → الخزان. انقل `base_out` من الخزان → المستخدم.
5. تحديث `base_sold += base_out`، `quote_reserve_real += quote_in_after_fee × (lp_share / total_share)`.
6. تحديث عدادات الرسوم (`protocol_fees_quote`، `creator_fees_quote`).
7. `state_data.num_buys += 1`.
8. إذا كان `quote_reserve_real ≥ quote_reserve_target` بعد التحديث، فإن SDK عادةً يسلسل تعليمة `Graduate` في نفس المعاملة. لا يقوم البرنامج بالتخرج التلقائي داخل `Buy` — يلزم استدعاء `Graduate` لاحقاً.

## `BuyExactOut`

يحدد المستخدم الدقيق `base_out`؛ يحسب البرنامج `quote_in`.

**الحجج**

```
base_out:      u64
maximum_quote_in: u64
```

نفس الحسابات مثل `BuyExactIn`. يستخدم التكامل التربيعي الشكل المغلق (أو معكوس CPMM، لـ curve\_type 1) بدلاً من تكرار Newton.

## `Sell` / `SellExactIn` / `SellExactOut`

مرآة `Buy`. يعيد المستخدم `base_in` إلى المنحنى ويستقبل `quote_out`. يتم خصم الرسم من `quote_out`، لذا يستقبل المستخدم أقل من العائدات المتكاملة الخام.

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

* `user_base_ata.balance ≥ base_in`.
* لا يمكن للبيع دفع `base_sold` تحت 0 (متكرر مع ما سبق بالنظر إلى أن المحاسبة متسقة).
* الإطلاق هو `Active`.

**التأثير** — متناظر مع `Buy`. ينخفض `base_sold`، ينخفض `quote_reserve_real`. الرسوم لا تزال تتراكم.

## `MigrateToAmm` / `MigrateToCpswap`

تخرج إطلاق إلى مجموعة AMM قابلة للتداول بمجرد أن يصل المنحنى إلى `total_quote_fund_raising`. المتغيران المقابلان لهدفي التخرج — AMM v4 و CPMM — و **يكون واحد منهما فقط صالحاً لأي إطلاق معين**، محدد بواسطة `pool_state.migrate_type` (مضبوط في وقت `Initialize`).

**من يوقّع**

* `MigrateToAmm` — المحفظة `migrate_to_amm_wallet` المسجلة على `GlobalConfig` الملزم.
* `MigrateToCpswap` — المحفظة `migrate_to_cpswap_wallet` المسجلة على `GlobalConfig` الملزم.

عادةً تُحتفظ بهذه المحافظ من قبل رافعة التخرج التي يديرها Raydium؛ في الممارسة، يحدث التخرج ثوان بعد تجاوز الحد الأدنى، بغض النظر عمن أطلق عملية الشراء النهائية.

**الحجج**

يأخذ `MigrateToAmm` ثلاثة (معاملات سوق OpenBook في الغالب التي ينقلها البرنامج إلى AMM v4):

```
base_lot_size:               u64
quote_lot_size:              u64
market_vault_signer_nonce:   u8
```

`MigrateToCpswap` لا يأخذ أي شيء.

**التأثير (مشترك بين الاثنين)**

1. تحقق من `pool_state.status == Migrate` (أي، تم الوصول إلى `quote_reserve_target`). وإلا عاد برجوع `PoolMigrated` (كانت الحالة بالفعل `Migrated`) أو `PoolFunding` (لا يزال في مرحلة التمويل).
2. تحقق من أن `pool_state.migrate_type` يطابق التعليمة (`0` لـ AMM، `1` لـ CPMM). وإلا عاد برجوع `MigrateTypeNotMatch`.
3. حساب احتياطيات ما بعد التخرج:
   * `base_amount_out = base_vault.amount − vesting_schedule.total_locked_amount`
   * `quote_amount_out = quote_vault.amount − quote_protocol_fee − migrate_fee − platform_fee`
4. CPI في برنامج الهدف (`AMM v4 Initialize2` أو `CPMM InitializeWithPermission`) بهذه الاحتياطيات لإنشاء مجموعة ما بعد التخرج.
5. قسّم LP الناتج وفقاً لـ `PlatformConfig.{platform_scale, creator_scale, burn_scale}` الملزم (CPMM فقط) — قطعة واحدة ممنوحة لـ `platform_nft_wallet`، واحدة لـ creator NFT ملفوفة ببرنامج LP-Lock، واحدة محترقة عبر Burn & Earn. لتخرج AMM v4، يتم حكم تخصيص LP بواسطة معاملات التهيئة الخاصة بـ AMM v4.
6. استدعاء `base_mint.mint_authority` (تعيين إلى `None`).
7. اقلب `pool_state.status = Migrated`، اضبط `vesting_schedule.start_time = block_time + cliff_period`.

**الشروط اللاحقة** — `BuyExactIn`، `BuyExactOut`، `SellExactIn`، `SellExactOut` سترفض من هذه النقطة فصاعداً مع `PoolMigrated`. مجموعة AMM الناتجة موثوقة وتتاجر مثل أي مجموعة AMM v4 / CPMM أخرى.

**الأخطاء الشائعة** — `PoolFunding`، `PoolMigrated`، `MigrateTypeNotMatch`، `InvalidCpSwapConfig`، `MathOverflow`.

## `CollectFee`

مسح إداري لرسوم البروتوكول المتراكمة للتجارة على إطلاق واحد.

**الحجج** — لا شيء.

**الحسابات**

| # | الاسم                     | W | S | الملاحظات                                        |
| - | ------------------------- | - | - | ------------------------------------------------ |
| 1 | `protocol_fee_owner`      |   | S | يجب أن يساوي `global_config.protocol_fee_owner`. |
| 2 | `authority`               |   |   | PDA `[b"vault_auth_seed"]`؛ يوقع نقل الخزان.     |
| 3 | `pool_state`              | W |   | تم الطفرة لتصفير `quote_protocol_fee`.           |
| 4 | `global_config`           |   |   | مصدر الحقيقة للموقع.                             |
| 5 | `quote_vault`             | W |   | تُستنزف بواسطة `quote_protocol_fee`.             |
| 6 | `recipient_token_account` | W |   | ATA من `protocol_fee_owner` على `quote_mint`.    |
| 7 | `quote_mint`              |   |   |                                                  |
| 8 | `token_program`           |   |   | SPL Token (quote mint هو دائماً SPL Token).      |

**التأثير** — نقل `pool_state.quote_protocol_fee` من `quote_vault` إلى `recipient_token_account`، ثم تصفير العداد. يمكن استدعاؤه في أي وقت بعد أول عملية شراء.

## `CollectMigrateFee`

مسح إداري لرسم الهجرة المتراكمة عند التخرج. نفس شكل الحساب مثل `CollectFee` مع `migrate_fee_owner` كموقع (بدلاً من `protocol_fee_owner`) و `pool_state.migrate_fee` كعداد مستنزف.

## `ClaimCreatorFee`

مسح لكل منشئ برسوم المنشئ المتراكمة عبر **كل إطلاق يملكه المنشئ** الذي يستخدم نفس quote mint. يصرف خزان رسوم المنشئ، لا الخزان لكل مجموعة.

**الحجج** — لا شيء.

**الحسابات**

| # | الاسم                      | W | S | الملاحظات                                                    |
| - | -------------------------- | - | - | ------------------------------------------------------------ |
| 1 | `creator`                  | W | S | منشئ المجموعة.                                               |
| 2 | `fee_vault_authority`      |   |   | PDA `[b"creator_fee_vault_auth_seed"]`.                      |
| 3 | `creator_fee_vault`        | W |   | PDA في البذور `[creator, quote_mint]`؛ الخزان الموحد للمنشئ. |
| 4 | `recipient_token_account`  | W |   | `init_if_needed`؛ ATA من `creator` على `quote_mint`.         |
| 5 | `quote_mint`               |   |   |                                                              |
| 6 | `token_program`            |   |   |                                                              |
| 7 | `system_program`           |   |   | لإنشاء ATA إذا لزم الأمر.                                    |
| 8 | `associated_token_program` |   |   |                                                              |

**التأثير** — نقل رصيد `creator_fee_vault` بالكامل إلى `recipient_token_account`. يعود برجوع مع فحص require-greater-than-zero إذا كان الخزان فارغاً.

## `ClaimPlatformFee`

مسح لكل منصة يصرف خزان quote للإطلاق مباشرة. استخدم هذا عندما تريد منصة المطالبة بحصتها لإطلاق محدد واحد دون المرور عبر خزان المنصة الموحد.

**الحجج** — لا شيء.

**الحسابات**

| #  | الاسم                      | W | S | الملاحظات                                           |
| -- | -------------------------- | - | - | --------------------------------------------------- |
| 1  | `platform_fee_wallet`      | W | S | يجب أن يساوي `platform_config.platform_fee_wallet`. |
| 2  | `authority`                |   |   | PDA `[b"vault_auth_seed"]`.                         |
| 3  | `pool_state`               | W |   | مستنزف بواسطة `pool_state.platform_fee`.            |
| 4  | `platform_config`          |   |   | مصدر الحقيقة للموقع.                                |
| 5  | `quote_vault`              | W |   | مستنزف.                                             |
| 6  | `recipient_token_account`  | W |   | `init_if_needed`؛ ATA من `platform_fee_wallet`.     |
| 7  | `quote_mint`               |   |   |                                                     |
| 8  | `token_program`            |   |   |                                                     |
| 9  | `system_program`           |   |   |                                                     |
| 10 | `associated_token_program` |   |   |                                                     |

**التأثير** — نقل `pool_state.platform_fee` من `quote_vault` إلى `recipient_token_account`، تصفير العداد.

## `ClaimPlatformFeeFromVault`

مسح موحد لكل منصة. يصرف خزان رسوم المنصة لكل quote-mint الذي يتراكم الرسوم من كل إطلاق موجه عبر المنصة.

**الحجج** — لا شيء.

**الحسابات**

| # | الاسم                      | W | S | الملاحظات                                           |
| - | -------------------------- | - | - | --------------------------------------------------- |
| 1 | `platform_fee_wallet`      | W | S | يجب أن يساوي `platform_config.platform_fee_wallet`. |
| 2 | `fee_vault_authority`      |   |   | PDA `[b"platform_fee_vault_auth_seed"]`.            |
| 3 | `platform_config`          |   |   |                                                     |
| 4 | `platform_fee_vault`       | W |   | PDA في البذور `[platform_config, quote_mint]`.      |
| 5 | `recipient_token_account`  | W |   | `init_if_needed`؛ ATA من `platform_fee_wallet`.     |
| 6 | `quote_mint`               |   |   |                                                     |
| 7 | `token_program`            |   |   |                                                     |
| 8 | `system_program`           |   |   |                                                     |
| 9 | `associated_token_program` |   |   |                                                     |

**التأثير** — نقل الرصيد الكامل لـ `platform_fee_vault` إلى `recipient_token_account`. يعود برجوع إذا كان الخزان فارغاً.

## تعليمات الاستحقاق وإعدادات المنصة

تم توثيق هذه على صفحات مخصصة لأن لكل واحدة نموذج حالة خاص بها:

* [`CreateVestingAccount`، `CreatePlatformVestingAccount`، `ClaimVestedToken`](/ar/products/launchlab/vesting)
* [`CreatePlatformConfig`، `UpdatePlatformConfig`، `UpdatePlatformCurveParam`، `RemovePlatformCurveParam`، `CreatePlatformGlobalAccess`، `ClosePlatformGlobalAccess`](/ar/products/launchlab/platform-config)
* [`CreateConfig`، `UpdateConfig`](/ar/products/launchlab/global-config)

## مصفوفة تغيير الحالة

| التعليمة                                | `status`   | `real_base` | `real_quote`     | عدادات الرسوم                                  | مجموعة ما بعد الحالة                              |
| --------------------------------------- | ---------- | ----------- | ---------------- | ---------------------------------------------- | ------------------------------------------------- |
| `Initialize{V2,WithToken2022}`          | Funding    | 0           | 0                | 0                                              | —                                                 |
| `BuyExactIn(q_in)`                      | Funding    | +∆          | +∆q\_after\_fee  | `quote_protocol_fee += ∆`، `platform_fee += ∆` | —                                                 |
| `SellExactIn(b_in)`                     | Funding    | −∆          | −∆q\_before\_fee | (نفس الشيء)                                    | —                                                 |
| تم الوصول إلى الحد الأدنى               | → Migrate  | —           | —                | —                                              | —                                                 |
| `MigrateToAmm` / `MigrateToCpswap`      | → Migrated | (مجمد)      | (مجمد)           | تم تعيين `migrate_fee`                         | تم الإنشاء، تم تقسيم LP وفقاً لـ `PlatformConfig` |
| `CollectFee` / `CollectMigrateFee`      | أي         | —           | —                | تم تصفير العداد                                | —                                                 |
| `ClaimCreatorFee` / `ClaimPlatformFee*` | أي         | —           | —                | يصرف الخزان                                    | —                                                 |
| `CreateVestingAccount`                  | Funding    | —           | —                | —                                              | يرفع `allocated_share_amount`                     |
| `ClaimVestedToken`                      | Migrated   | —           | —                | —                                              | يصرف `base_vault`                                 |

## إلى أين تذهب بعد ذلك

* [`products/launchlab/code-demos`](/ar/products/launchlab/code-demos) — أمثلة TypeScript لكل تعليمة.
* [`products/launchlab/accounts`](/ar/products/launchlab/accounts) — شكل الحالة الكامل.
* [`reference/error-codes`](/ar/reference/error-codes) — enum خطأ LaunchLab.

المصادر:

* [وحدة Raydium SDK v2 `LaunchLab`](https://github.com/raydium-io/raydium-sdk-V2)
* مصدر برنامج Raydium LaunchLab
