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

# Expand Babylon BTC staking

> This operation initiates a Babylon BTC staking expansion request. 

Before calling this operation, please ensure the following:
- The BTC staking position is active.
- The finality provider public keys are valid. Each BSN chain can have at most one finality provider public key.

The system first checks whether the provided BTC staking position is active. If active, it creates a new BTC staking position for the Phase-3 expansion.

The expansion is processed asynchronously and may take some time to complete.

For more information, refer to [Babylon's official doc](https://github.com/babylonlabs-io/babylon/tree/main/docs).


<Tip>
  Try [Cobo WaaS Skill](/v2/guides/overview/cobo-waas-skill) in your AI coding assistant (Claude Code, Cursor, etc.). Describe your needs in natural language to auto-generate production-ready SDK code and debug faster 🚀
</Tip>

<RequestExample>
  ```python Python theme={null}
  import cobo_waas2
  from cobo_waas2.models.babylon_create_staking_expansion import (
      BabylonCreateStakingExpansion,
  )
  from cobo_waas2.models.stakings import Stakings
  from cobo_waas2.rest import ApiException
  from pprint import pprint

  # See configuration.py for a list of all supported configurations.
  configuration = cobo_waas2.Configuration(
      # Replace `<YOUR_PRIVATE_KEY>` with your private key
      api_private_key="<YOUR_PRIVATE_KEY>",
      # Select the development environment. To use the production environment, change the URL to https://api.cobo.com/v2.
      host="https://api.dev.cobo.com/v2",
  )
  # Enter a context with an instance of the API client
  with cobo_waas2.ApiClient(configuration) as api_client:
      # Create an instance of the API class
      api_instance = cobo_waas2.StakingsApi(api_client)
      babylon_create_staking_expansion = cobo_waas2.BabylonCreateStakingExpansion(
          staking_id="3f2840ce-44eb-450b-aa81-d3f84b772efb",
          finality_provider_public_keys=[
              "eca1b104dce16c30705f4147a9c4a373ac88646c5d1bcda6a89c018940cb96a0"
          ],
          fee=cobo_waas2.TransactionRequestFee(
              cobo_waas2.TransactionRequestFixedFee(
                  fee_type="EVM_EIP_1559", token_id="TRON"
              )
          ),
      )

      try:
          # Expand Babylon BTC staking
          api_response = api_instance.create_babylon_staking_expansion(
              babylon_create_staking_expansion=babylon_create_staking_expansion
          )
          print("The response of StakingsApi->create_babylon_staking_expansion:\n")
          pprint(api_response)
      except Exception as e:
          print(
              "Exception when calling StakingsApi->create_babylon_staking_expansion: %s\n"
              % e
          )

  ```

  ```java Java theme={null}
  // Import classes:
  import com.cobo.waas2.ApiClient;
  import com.cobo.waas2.ApiException;
  import com.cobo.waas2.Configuration;
  import com.cobo.waas2.Env;
  import com.cobo.waas2.api.StakingsApi;
  import com.cobo.waas2.model.*;
  import java.util.Arrays;

  public class Example {
    public static void main(String[] args) {
      ApiClient defaultClient = Configuration.getDefaultApiClient();
      // Select the development environment. To use the production environment, replace `Env.DEV` with
      // `Env.PROD
      defaultClient.setEnv(Env.DEV);

      // Replace `<YOUR_PRIVATE_KEY>` with your private key
      defaultClient.setPrivKey("<YOUR_PRIVATE_KEY>");
      StakingsApi apiInstance = new StakingsApi();
      BabylonCreateStakingExpansion babylonCreateStakingExpansion =
          new BabylonCreateStakingExpansion()
              .stakingId("3f2840ce-44eb-450b-aa81-d3f84b772efb")
              .finalityProviderPublicKeys(
                  Arrays.asList("eca1b104dce16c30705f4147a9c4a373ac88646c5d1bcda6a89c018940cb96a0"))
              .fee(
                  new TransactionRequestFee(
                      new TransactionRequestFixedFee()
                          .feeType(FeeType.EVM_EIP_1559)
                          .tokenId("TRON")));
      try {
        Stakings result = apiInstance.createBabylonStakingExpansion(babylonCreateStakingExpansion);
        System.out.println(result);
      } catch (ApiException e) {
        System.err.println("Exception when calling StakingsApi#createBabylonStakingExpansion");
        System.err.println("Status code: " + e.getCode());
        System.err.println("Reason: " + e.getResponseBody());
        System.err.println("Response headers: " + e.getResponseHeaders());
        e.printStackTrace();
      }
    }
  }

  ```

  ```go Go theme={null}
  package main

  import (
  	"context"
  	"fmt"
  	coboWaas2 "github.com/CoboGlobal/cobo-waas2-go-sdk/cobo_waas2"
  	"github.com/CoboGlobal/cobo-waas2-go-sdk/cobo_waas2/crypto"
  	"os"
  )

  func main() {
  	babylonCreateStakingExpansion := *coboWaas2.NewBabylonCreateStakingExpansion("3f2840ce-44eb-450b-aa81-d3f84b772efb", []string{"eca1b104dce16c30705f4147a9c4a373ac88646c5d1bcda6a89c018940cb96a0"}, coboWaas2.TransactionRequestFee{TransactionRequestEvmEip1559Fee: coboWaas2.NewTransactionRequestEvmEip1559Fee("9000000000000", "1000000000000", coboWaas2.FeeType("Fixed"), "ETH")})

  	configuration := coboWaas2.NewConfiguration()
  	// Initialize the API client
  	apiClient := coboWaas2.NewAPIClient(configuration)
  	ctx := context.Background()

  	// Select the development environment. To use the production environment, replace coboWaas2.DevEnv with coboWaas2.ProdEnv
  	ctx = context.WithValue(ctx, coboWaas2.ContextEnv, coboWaas2.DevEnv)
  	// Replace `<YOUR_PRIVATE_KEY>` with your private key
  	ctx = context.WithValue(ctx, coboWaas2.ContextPortalSigner, crypto.Ed25519Signer{
  		Secret: "<YOUR_PRIVATE_KEY>",
  	})
  	resp, r, err := apiClient.StakingsAPI.CreateBabylonStakingExpansion(ctx).
  		BabylonCreateStakingExpansion(babylonCreateStakingExpansion).
  		Execute()
  	if err != nil {
  		fmt.Fprintf(
  			os.Stderr,
  			"Error when calling `StakingsAPI.CreateBabylonStakingExpansion``: %v\n",
  			err,
  		)
  		fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
  	}
  	// response from `CreateBabylonStakingExpansion`: Stakings
  	fmt.Fprintf(os.Stdout, "Response from `StakingsAPI.CreateBabylonStakingExpansion`: %v\n", resp)
  }

  ```

  ```javascript JavaScript theme={null}
  const CoboWaas2 = require("@cobo/cobo-waas2");
  // Initialize the API client
  const apiClient = CoboWaas2.ApiClient.instance;
  // Select the development environment. To use the production environment, replace `Env.DEV` with `Env.PROD`
  apiClient.setEnv(CoboWaas2.Env.DEV);
  // Replace `<YOUR_PRIVATE_KEY>` with your private key
  apiClient.setPrivateKey("<YOUR_PRIVATE_KEY>");
  // Call the API
  const apiInstance = new CoboWaas2.StakingsApi();
  const opts = {
    BabylonCreateStakingExpansion:
      CoboWaas2.BabylonCreateStakingExpansion.constructFromObject({
        staking_id: "3f2840ce-44eb-450b-aa81-d3f84b772efb",
        finality_provider_public_keys: [
          "eca1b104dce16c30705f4147a9c4a373ac88646c5d1bcda6a89c018940cb96a0",
        ],
        fee: { fee_type: "EVM_EIP_1559", token_id: "TRON" },
      }),
  };
  apiInstance.createBabylonStakingExpansion(opts).then(
    (data) => {
      console.log("API called successfully. Returned data: " + data);
    },
    (error) => {
      console.error(error);
    },
  );

  ```
</RequestExample>


## OpenAPI

````yaml post /stakings/protocols/babylon/stakings/expansions
openapi: 3.0.3
info:
  title: Cobo Wallet as a Service 2.0
  description: >
    The Cobo Wallet-as-a-Service (WaaS) 2.0 API is the latest version of Cobo's
    WaaS API offering. It enables you to access Cobo's full suite of crypto
    wallet technologies with powerful and flexible access controls. By
    encapsulating complex security protocols and streamlining blockchain
    interactions, this API allows you to concentrate on your core business
    activities without worrying about the safety of your assets. The WaaS 2.0
    API presents the following key features:


    - A unified API for Cobo's [all four wallet
    types](https://manuals.cobo.com/en/portal/introduction#an-all-in-one-wallet-platform)

    - Support for 80+ chains and 3000+ tokens

    - A comprehensive selection of webhook events

    - Flexible usage models for MPC Wallets, including [Organization-Controlled
    Wallets](https://manuals.cobo.com/en/portal/mpc-wallets/ocw/introduction)
    and [User-Controlled
    Wallets](https://manuals.cobo.com/en/portal/mpc-wallets/ucw/introduction)

    - Programmatic control of smart contract wallets such as Safe{Wallet} with
    fine-grained access controls

    - Seamlessly transfer funds across multiple exchanges, including Binance,
    OKX, Bybit, Deribit, and more


    For more information about the WaaS 2.0 API, see [Introduction to WaaS
    2.0](https://www.cobo.com/developers/v2/guides/overview/introduction).
  termsOfService: https://cobo.com/waas/tos/
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
  contact:
    name: Cobo WaaS
    url: https://www.cobo.com/waas
    email: help@cobo.com
  version: 1.0.0
servers:
  - url: https://api.dev.cobo.com/v2
    description: Development environment
  - url: https://api.cobo.com/v2
    description: Production environment
security:
  - CoboAuth: []
tags:
  - name: Organizations
    description: Operations related to Organizations.
  - name: Wallets
    description: Operations related to all wallets.
  - name: Wallets - MPC Wallets
    description: Operations related to mpc wallet.
  - name: Wallets - Exchange Wallet
    description: Operations related to exchange wallet.
  - name: Wallets - Smart Contract Wallets
    description: Operations related to smart contract wallet.
  - name: Transactions
    description: Operations related to all transactions.
  - name: Developers - Webhooks
    description: Operations related to webhooks.
  - name: Stakings
    description: Operations related to staking.
  - name: OAuth
    description: Operations related to OAuth.
  - name: Developers
    description: Operations related to developers.
  - name: AddressBooks
    description: Operations related to address books.
  - name: TravelRule
    description: Operations related to travel rule.
  - name: GraphQL
    description: Operations related to executing GraphQL queries and mutations.
  - name: PrimeBroker
    description: Operations related to prime broker.
  - name: AppWorkflows
    description: Operations related to app workflow.
  - name: FeeStation
    description: Operations related to fee station.
  - name: Payment
    description: Operations related to payment.
  - name: Batch Payouts
    description: Operations related to batch payouts.
  - name: Tokenization
    description: Operations related to tokenization.
  - name: AutoSweep
    description: Operations related to auto sweep.
  - name: Compliance
    description: Operations related to compliance.
paths:
  /stakings/protocols/babylon/stakings/expansions:
    post:
      tags:
        - Stakings
      summary: Expand Babylon BTC staking
      description: >
        This operation initiates a Babylon BTC staking expansion request. 


        Before calling this operation, please ensure the following:

        - The BTC staking position is active.

        - The finality provider public keys are valid. Each BSN chain can have
        at most one finality provider public key.


        The system first checks whether the provided BTC staking position is
        active. If active, it creates a new BTC staking position for the Phase-3
        expansion.


        The expansion is processed asynchronously and may take some time to
        complete.


        For more information, refer to [Babylon's official
        doc](https://github.com/babylonlabs-io/babylon/tree/main/docs).
      operationId: create_babylon_staking_expansion
      requestBody:
        $ref: '#/components/requestBodies/createBabylonStakingExpansionBody'
      responses:
        '201':
          $ref: '#/components/responses/createBabylonStakingExpansionResponse'
        4XX:
          $ref: '#/components/responses/badRequestError'
        5XX:
          $ref: '#/components/responses/internalServerError'
components:
  requestBodies:
    createBabylonStakingExpansionBody:
      description: The request body to expand Babylon BTC staking to Phase-3
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/BabylonCreateStakingExpansion'
  responses:
    createBabylonStakingExpansionResponse:
      description: Successfully expanded Babylon BTC staking to Phase-3.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Stakings'
    badRequestError:
      description: >-
        Bad request. Your request contains malformed syntax or invalid
        parameters.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    internalServerError:
      description: Internal server error.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  schemas:
    BabylonCreateStakingExpansion:
      title: Babylon staking expansion request body
      type: object
      description: The staking expansion information specific to the Babylon protocol.
      required:
        - finality_provider_public_keys
        - staking_id
        - fee
      properties:
        staking_id:
          description: The ID of the Phase-2 BTC staking position.
          type: string
          example: 3f2840ce-44eb-450b-aa81-d3f84b772efb
        finality_provider_public_keys:
          description: >-
            The public keys of the finality providers, with each key
            corresponding to a BSN chain.
          type: array
          items:
            type: string
            pattern: ^[0-9a-fA-F]{64}$
            example: eca1b104dce16c30705f4147a9c4a373ac88646c5d1bcda6a89c018940cb96a0
        request_id:
          type: string
          example: f47ac10b-58cc-4372-a567-0e02b2c3d479
          description: >-
            The request ID that is used to track a request. The request ID is
            provided by you and must be unique within your organization.
        fee:
          $ref: '#/components/schemas/TransactionRequestFee'
    Stakings:
      type: object
      description: The information about a staking position.
      required:
        - id
        - wallet_id
        - address
        - pool_id
        - token_id
        - amounts
        - created_timestamp
        - updated_timestamp
      properties:
        id:
          description: The ID of the staking position.
          type: string
          example: 0011039d-27fb-49ba-b172-6e0aa80e37ec
        wallet_id:
          type: string
          example: 0111039d-27fb-49ba-b172-6e0aa80e37ec
          description: The staker's wallet ID.
        address:
          type: string
          example: '0xAbCdE123456789aBcDeF123456789aBcDeF12345'
          description: The staker's wallet address.
        amounts:
          $ref: '#/components/schemas/AmountDetails'
        pool_id:
          $ref: '#/components/schemas/StakingPoolId'
        token_id:
          type: string
          example: BTC
          description: The token ID.
        rewards_info:
          description: The information about the staking rewards.
          type: object
          example: {}
        created_timestamp:
          description: The time when the staking position was created.
          type: integer
          format: int64
          example: 1640995200000
        updated_timestamp:
          description: The time when the staking position was last updated.
          type: integer
          format: int64
          example: 1640995200000
        validator_info:
          $ref: '#/components/schemas/BabylonValidator'
        validators:
          type: array
          items:
            $ref: '#/components/schemas/BabylonValidator'
        extra:
          oneOf:
            - $ref: '#/components/schemas/BabylonStakingExtra'
            - $ref: '#/components/schemas/EthStakingExtra'
            - $ref: '#/components/schemas/CoreStakingExtra'
          discriminator:
            propertyName: pool_type
            mapping:
              Babylon:
                $ref: '#/components/schemas/BabylonStakingExtra'
              ETHBeacon:
                $ref: '#/components/schemas/EthStakingExtra'
              CoreBTC:
                $ref: '#/components/schemas/CoreStakingExtra'
    ErrorResponse:
      type: object
      description: The response of a failed request.
      required:
        - error_code
        - error_message
        - error_id
      properties:
        error_code:
          type: integer
          description: >-
            The error code. Refer to [Error codes and status
            codes](https://www.cobo.com/developers/v2/api-references/error-codes)
            for more details.
        error_message:
          type: string
          description: The error description.
        error_id:
          type: string
          description: >-
            The error log ID. You can provide the error ID when submitting a
            ticket to help Cobo to locate the issue.
          example: 0b6ddf19083c4bd1a9ca01bec44b24dd
    TransactionRequestFee:
      oneOf:
        - $ref: '#/components/schemas/TransactionRequestFixedFee'
        - $ref: '#/components/schemas/TransactionRequestEvmEip1559Fee'
        - $ref: '#/components/schemas/TransactionRequestEvmLegacyFee'
        - $ref: '#/components/schemas/TransactionRequestUtxoFee'
        - $ref: '#/components/schemas/TransactionRequestSOLFee'
        - $ref: '#/components/schemas/TransactionRequestFILFee'
      discriminator:
        propertyName: fee_type
        mapping:
          Fixed:
            $ref: '#/components/schemas/TransactionRequestFixedFee'
          EVM_EIP_1559:
            $ref: '#/components/schemas/TransactionRequestEvmEip1559Fee'
          EVM_Legacy:
            $ref: '#/components/schemas/TransactionRequestEvmLegacyFee'
          UTXO:
            $ref: '#/components/schemas/TransactionRequestUtxoFee'
          SOL:
            $ref: '#/components/schemas/TransactionRequestSOLFee'
          FIL:
            $ref: '#/components/schemas/TransactionRequestFILFee'
    AmountDetails:
      type: array
      description: The details about the staking amount.
      items:
        type: object
        required:
          - status
          - amount
        properties:
          status:
            $ref: '#/components/schemas/AmountStatus'
          amount:
            type: string
            example: '100.00'
            description: The staking amount.
    StakingPoolId:
      type: string
      enum:
        - babylon_btc_signet
        - babylon_btc
        - beacon_eth
        - beacon_eth_holesky
        - core_btc
        - core_xtn
        - sky_farm_eth_usdc
        - bithive_signet
        - bithive
        - beacon_bera
        - beacon_bera_testnet
        - berachain_bgt
        - berachain_bgt_testnet
      example: babylon_btc_signet
      description: >-
        The ID of the staking pool. A staking pool is a pairing of a staking
        protocol and a specific type of token. Currently, `berachain_bgt` and
        `berachain_bgt_testnet` are not supported.
    BabylonValidator:
      allOf:
        - $ref: '#/components/schemas/BaseStakeExtra'
        - type: object
          description: The information about the Babylon validator.
          required:
            - name
          properties:
            icon_url:
              description: The URL of the validator's icon.
              type: string
              format: url
              example: https://example.com/icon.png
            name:
              description: The validator's name.
              type: string
              example: Cobo
            priority:
              description: This property can be ignored.
              type: integer
              example: 0
            public_key:
              description: The public key of the validator.
              type: string
              example: eca1b104dce16c30705f4147a9c4a373ac88646c5d1bcda6a89c018940cb96a0
            commission_rate:
              description: The commission rate of the validator.
              type: number
              format: float
              example: 0.1
            supported_pos_chains:
              description: A list of supported Proof-of-Stake (PoS) chains.
              type: array
              items:
                type: string
                enum:
                  - Babylon
                  - Cosmos
                  - Ethereum
              example:
                - Babylon
                - Cosmos
                - Ethereum
    BabylonStakingExtra:
      title: Babylon
      allOf:
        - $ref: '#/components/schemas/BaseStakeExtra'
        - type: object
          description: The information about the Babylon protocol.
          required:
            - pos_chain
          properties:
            pos_chain:
              description: The Proof-of-Stake (PoS) chain.
              type: string
              example: Babylon Chain
            unlock_timestamp:
              description: >-
                The estimated time when the bitcoins will be unlocked, in Unix
                timestamp format, measured in milliseconds.
              type: integer
              format: int64
              example: 1640995200000
            unlock_block_height:
              description: The block height at which the bitcoins will be unlocked.
              type: integer
              format: int64
              example: 871234
            stake_address:
              description: The address receiving the staked bitcoins.
              type: string
              example: tb1pgmpawe2rkrzuuflu8yw564lerfalhw8td36dha49yz4l99xvm3psteh393
            unbond_address:
              description: The address receiving the unlocked bitcoins.
              type: string
              example: tb1pzcn4hmsfq32vyfnckvrtyjhdh0cf2hsm2nr6m8034x4lnrx3ry4q2nyzqv
    EthStakingExtra:
      title: Ethereum Beacon Chain
      allOf:
        - $ref: '#/components/schemas/BaseStakeExtra'
        - type: object
          description: The information about the Ethereum Beacon Chain.
          required:
            - pos_chain
          properties:
            pos_chain:
              description: The Proof-of-Stake (PoS) chain.
              type: string
              example: Ethereum
            beacon_validators:
              description: The list of validator information.
              type: array
              items:
                type: object
                properties:
                  pubkey:
                    description: The public key of the validator.
                    type: string
                    example: '0x123456789abcdef'
                  status:
                    $ref: '#/components/schemas/AmountStatus'
                  apy:
                    description: The annual percentage yield (APY) of the validator.
                    type: number
                    example: 0.02
                  staked_amount:
                    description: The staked amount.
                    type: string
                    example: '100.00'
                  rewards_received:
                    description: The rewards received.
                    type: string
                    example: '10.00'
                  updated_timestamp:
                    description: >-
                      The time when the validator's status was last updated, in
                      Unix timestamp format and measured in milliseconds.
                    type: integer
                    format: int64
                    example: 1640995200000
    CoreStakingExtra:
      title: CORE
      allOf:
        - $ref: '#/components/schemas/BaseStakeExtra'
        - type: object
          description: The information about staking in the CORE staking protocol.
          required:
            - pos_chain
            - staker_address
            - validator_address
            - reward_address
            - timelock
          properties:
            pos_chain:
              description: The Proof-of-Stake (PoS) chain.
              type: string
              example: Ethereum
            staker_address:
              description: The staker's Bitcoin address.
              type: string
              example: bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh
            validator_address:
              description: The validator's EVM address.
              type: string
              example: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045'
            reward_address:
              description: The EVM address to receive staking rewards.
              type: string
              example: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045'
            timelock:
              description: >-
                The Unix timestamp (in seconds) when the staking position will
                be unlocked and available for withdrawal.
              type: integer
              example: 1704067200
    TransactionRequestFixedFee:
      type: object
      description: >
        The preset properties to limit transaction fee.


        In the fixed fee model, the transaction fee is a fixed amount within a
        certain amount of period regardless of the transaction size or network
        congestion, which can vary between different chains. For more
        information about the fixed fee model, refer to [Fee
        models](https://www.cobo.com/developers/v2/guides/transactions/estimate-fees#fee-models).


        You can specify the maximum fee amount to limit the transaction fee. The
        transaction will fail if the transaction fee exceeds the specified
        maximum fee amount.


        Switch between the tabs to display the properties for different
        transaction fee models.
      title: Fixed
      required:
        - fee_type
        - token_id
      allOf:
        - type: object
          properties:
            fee_type:
              $ref: '#/components/schemas/FeeType'
            token_id:
              type: string
              description: The token used to pay the transaction fee.
              example: TRON
        - $ref: '#/components/schemas/MaxFeeAmount'
    TransactionRequestEvmEip1559Fee:
      type: object
      description: >
        The preset properties to limit transaction fee.


        For more information about the EIP-1559 fee model, refer to [Fee
        models](https://www.cobo.com/developers/v2/guides/transactions/estimate-fees#fee-models).


        You can specify the maximum gas fee per gas unit, maximum priority fee
        per gas unit, and the gas limit to limit the gas price, priority fee per
        gas unit, gas units used in the transaction. 


        Switch between the tabs to display the properties for different
        transaction fee models.
      title: EVM_EIP_1559
      required:
        - fee_type
        - token_id
        - max_fee_per_gas
        - max_priority_fee_per_gas
      allOf:
        - type: object
          properties:
            fee_type:
              $ref: '#/components/schemas/FeeType'
            token_id:
              type: string
              description: The token used to pay the transaction fee.
              example: ETH
            gas_limit:
              type: string
              description: >-
                The gas limit. It represents the maximum number of gas units
                that you are willing to pay for the execution of a transaction
                or Ethereum Virtual Machine (EVM) operation. The gas unit cost
                of each operation varies.
              example: '21000'
        - $ref: '#/components/schemas/EvmEip1559FeeBasePrice'
    TransactionRequestEvmLegacyFee:
      type: object
      description: >
        The preset properties to limit transaction fee.


        For more information about the Legacy fee model, refer to [Fee
        models](https://www.cobo.com/developers/v2/guides/transactions/estimate-fees#fee-models).


        You can specify the gas limit to limit the gas units used in the
        transaction.


        Switch between the tabs to display the properties for different
        transaction fee models.
      required:
        - fee_type
        - token_id
        - gas_price
      title: EVM_Legacy
      allOf:
        - type: object
          properties:
            fee_type:
              $ref: '#/components/schemas/FeeType'
            token_id:
              type: string
              description: The token used to pay the transaction fee.
              example: ETH
            gas_limit:
              type: string
              description: >-
                The gas limit. It represents the maximum number of gas units
                that you are willing to pay for the execution of a transaction
                or Ethereum Virtual Machine (EVM) operation. The gas unit cost
                of each operation varies.
              example: '21000'
        - $ref: '#/components/schemas/EvmLegacyFeeBasePrice'
    TransactionRequestUtxoFee:
      type: object
      description: >
        The preset properties to limit transaction fee.


        For more information about the UTXO fee model, see [Fee
        models](https://www.cobo.com/developers/v2/guides/transactions/estimate-fees#fee-models).


        You can specify the maximum fee amount to limit the transaction fee. The
        transaction will fail if the transaction fee exceeds the specified
        maximum fee amount.


        Switch between the tabs to display the properties for different
        transaction fee models.
      required:
        - fee_type
        - token_id
      title: UTXO
      allOf:
        - type: object
          properties:
            fee_type:
              $ref: '#/components/schemas/FeeType'
            token_id:
              type: string
              description: The token used to pay the transaction fee.
              example: BTC
            max_fee_amount:
              type: string
              description: >-
                The maximum fee that you are willing to pay for the transaction.
                Provide the value without applying precision. The transaction
                will fail if the transaction fee exceeds the maximum fee.
              example: '0.1'
        - $ref: '#/components/schemas/UtxoFeeBasePrice'
    TransactionRequestSOLFee:
      type: object
      description: >
        The preset properties to limit transaction fee.


        For more information about the SOL fee model, see [Fee
        models](https://www.cobo.com/developers/v2/guides/transactions/estimate-fees#fee-models).


        You can specify CU price and CU limit to adjust the priority and
        resource allocation of your transaction.


        Switch between the tabs to display the properties for different
        transaction fee models.
      title: SOL
      required:
        - fee_type
        - token_id
        - compute_unit_price
        - compute_unit_limit
      allOf:
        - type: object
          properties:
            fee_type:
              $ref: '#/components/schemas/FeeType'
            token_id:
              type: string
              description: The token used to pay the transaction fee.
              example: ETH
        - $ref: '#/components/schemas/SOLComputeUnit'
    TransactionRequestFILFee:
      type: object
      description: >
        The preset properties to limit transaction fee.


        For more information about the FIL fee model, see [Fee
        models](https://www.cobo.com/developers/v2/guides/transactions/estimate-fees#fee-models).


        You can specify the gas fee cap, gas premium, and gas limit to control
        fee behavior and prioritization.


        Switch between the tabs to display the properties for different
        transaction fee models.
      title: FIL
      required:
        - fee_type
        - token_id
        - gas_fee_cap
        - gas_premium
      allOf:
        - type: object
          properties:
            fee_type:
              $ref: '#/components/schemas/FeeType'
            token_id:
              type: string
              description: The token used to pay the transaction fee.
              example: ETH
        - $ref: '#/components/schemas/FILPrice'
    AmountStatus:
      type: string
      enum:
        - StakeInProgress
        - Active
        - Rejected
        - LimitExceeded
        - Invalid
        - UnstakeInProgress
        - Withdrawable
        - WithdrawInProgress
        - Closed
      example: Active
      description: >
        The status of the staking amount. Possible values include:


        - `StakeInProgress`: The staking request is submitted and is waiting to
        be confirmed by the staking protocol.

        - `Active`: The amount has been staked.

        - `Rejected`: The staking request has been rejected because the signer
        refuses to sign the transaction.

        - `LimitExceeded`: The total staking cap of the staking protocol has
        been reached.

        - `Invalid`: The staking request is invalid. This is often due to the
        failure to broadcast the transaction.

        - `UnstakeInProgress`: The unstaking request is submitted and is waiting
        to be confirmed by the staking protocol.

        - `Withdrawable`: The tokens have been unstaked and are ready to be
        withdrawn.

        - `WithdrawInProgress`: The withdrawal request is submitted and is
        waiting to be confirmed on the chain network.

        - `Closed`: The staking position is closed.
    BaseStakeExtra:
      type: object
      description: The base information about a staking protocol.
      required:
        - pool_type
      properties:
        pool_type:
          $ref: '#/components/schemas/StakingPoolType'
    FeeType:
      type: string
      enum:
        - Fixed
        - EVM_EIP_1559
        - EVM_Legacy
        - UTXO
        - SOL
        - FIL
      example: EVM_EIP_1559
      default: EVM_EIP_1559
      description: >
        The fee model. Possible values include:

        - `Fixed`: The fixed fee model. 

        - `EVM_EIP_1559`: The EIP-1559 fee model.

        - `EVM_Legacy`: The legacy fee model.

        - `UTXO`: The fee model used in UTXO-based blockchains, such as Bitcoin.

        - `SOL`: The fee model used in Solana.

        - `FIL`: The fee model used in Filecoin.



        Each fee model requires a different set of properties. Switch between
        the above tabs for details.


        To learn more about the fee models, refer to [Fee
        models](https://www.cobo.com/developers/v2/guides/transactions/estimate-fees#fee-models).
    MaxFeeAmount:
      type: object
      properties:
        max_fee_amount:
          type: string
          description: >-
            The maximum fee that you are willing to pay for the transaction.
            Provide the value without applying precision. The transaction will
            fail if the transaction fee exceeds the maximum fee.
          example: '0.1'
    EvmEip1559FeeBasePrice:
      type: object
      properties:
        max_fee_per_gas:
          type: string
          description: The maximum gas fee per gas unit used on the chain, in wei.
          example: '9000000000000'
        max_priority_fee_per_gas:
          type: string
          description: >-
            The maximum priority fee per gas unit used, in wei. The maximum
            priority fee represents the highest amount of miner tips that you
            are willing to pay for your transaction.
          example: '1000000000000'
    EvmLegacyFeeBasePrice:
      type: object
      properties:
        gas_price:
          type: string
          description: >-
            The gas price, in wei. The gas price represents the amount of ETH
            that must be paid to validators for processing transactions per gas
            unit used.
          example: '100000000'
    UtxoFeeBasePrice:
      type: object
      properties:
        fee_rate:
          type: string
          description: >-
            The fee rate in sat/vByte. The fee rate represents the satoshis you
            are willing to pay for each byte of data that your transaction will
            consume on the blockchain.
          example: '50'
    SOLComputeUnit:
      type: object
      properties:
        compute_unit_price:
          type: string
          description: >-
            The price paid per compute unit. This value determines the priority
            fee for the transaction, allowing you to increase inclusion
            probability in congested conditions.
          example: '0.0001'
        compute_unit_limit:
          type: string
          description: >-
            The maximum number of compute units your transaction is allowed to
            consume. It sets an upper bound on computational resource usage to
            prevent overload.
          example: '200000'
    FILPrice:
      type: object
      properties:
        gas_premium:
          type: string
          description: >-
            An optional tip you can include to prioritize your transaction. The
            gas premium incentivizes miners to include your transaction sooner
            than those offering only the base fee.
          example: '0.0001'
        gas_fee_cap:
          type: string
          description: The maximum gas price you are willing to pay per unit of gas.
          example: '0.00035'
        gas_limit:
          type: string
          description: The maximum amount of gas your transaction is allowed to consume.
          example: '500'
    StakingPoolType:
      type: string
      enum:
        - Babylon
        - ETHBeacon
        - CoreBTC
        - SkyFarm
        - BitHive
        - BERABeacon
        - BeraChainBGT
      example: Babylon
      description: |
        The type of the staking pool. Possible values are:
        - `Babylon`: Babylon staking pool
        - `ETHBeacon`: Ethereum Beacon Chain staking pool
        - `CoreBTC`: Core BTC staking pool
        - `SkyFarm`: SKY farm staking pool
        - `BitHive`: BitHive staking pool
        - `BERABeacon`: BERA Beacon Chain staking pool
        - `BeraChainBGT`: Bera Chain BGT staking pool
  securitySchemes:
    CoboAuth:
      type: apiKey
      in: header
      name: BIZ-API-KEY
      description: >
        The API key. For more details, refer to [API
        key](https://www.cobo.com/developers/v2/guides/overview/cobo-auth#api-key).


        In the API playground, enter your [API
        secret](https://www.cobo.com/developers/v2/guides/overview/cobo-auth#api-secret),
        and your API key will be accordingly calculated.

````