> ## Documentation Index
> Fetch the complete documentation index at: https://cobo-docs-feature-cobo-cli.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Estimate staking fees

> This operation calculates the fee required for a staking activity based on factors such as network congestion and transaction complexity.

For some protocols, you can use the `fee.fee_rate` property in the request body to specify the fee rate you are willing to pay.

The `fee.max_fee_amount` property in the request body will be ignored.

<Note>For the Babylon protocol, you can only select UTXO as the fee model.</Note>


<RequestExample>
  ```python Python
  import cobo_waas2
  from cobo_waas2.models.get_staking_estimation_fee201_response import (
      GetStakingEstimationFee201Response,
  )
  from cobo_waas2.models.get_staking_estimation_fee_request import (
      GetStakingEstimationFeeRequest,
  )
  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)
      get_staking_estimation_fee_request = cobo_waas2.GetStakingEstimationFeeRequest()

      try:
          # Estimate staking fees
          api_response = api_instance.get_staking_estimation_fee(
              get_staking_estimation_fee_request=get_staking_estimation_fee_request
          )
          print("The response of StakingsApi->get_staking_estimation_fee:\n")
          pprint(api_response)
      except Exception as e:
          print(
              "Exception when calling StakingsApi->get_staking_estimation_fee: %s\n" % e
          )

  ```

  ```java Java
  // 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.*;

  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();
      GetStakingEstimationFeeRequest getStakingEstimationFeeRequest =
          new GetStakingEstimationFeeRequest();
      try {
        GetStakingEstimationFee201Response result =
            apiInstance.getStakingEstimationFee(getStakingEstimationFeeRequest);
        System.out.println(result);
      } catch (ApiException e) {
        System.err.println("Exception when calling StakingsApi#getStakingEstimationFee");
        System.err.println("Status code: " + e.getCode());
        System.err.println("Reason: " + e.getResponseBody());
        System.err.println("Response headers: " + e.getResponseHeaders());
        e.printStackTrace();
      }
    }
  }

  ```

  ```go Go
  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() {
  	getStakingEstimationFeeRequest := coboWaas2.get_staking_estimation_fee_request{
  		EstimateStakeFee: coboWaas2.NewEstimateStakeFee(
  			coboWaas2.ActivityType("Stake"),
  			"babylon_btc",
  			"100.00",
  			coboWaas2.TransactionRequestFee{
  				TransactionRequestEvmEip1559Fee: coboWaas2.NewTransactionRequestEvmEip1559Fee(
  					"9000000000000",
  					"1000000000000",
  					coboWaas2.FeeType("Fixed"),
  					"ETH",
  				),
  			},
  			coboWaas2.CreateStakeActivity_extra{
  				BabylonStakeExtra: coboWaas2.NewBabylonStakeExtra(
  					coboWaas2.StakingPoolType("Babylon"),
  					"eca1b104dce16c30705f4147a9c4a373ac88646c5d1bcda6a89c018940cb96a0",
  					int64(2000),
  				),
  			},
  		),
  	}

  	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.GetStakingEstimationFee(ctx).
  		GetStakingEstimationFeeRequest(getStakingEstimationFeeRequest).
  		Execute()
  	if err != nil {
  		fmt.Fprintf(
  			os.Stderr,
  			"Error when calling `StakingsAPI.GetStakingEstimationFee``: %v\n",
  			err,
  		)
  		fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
  	}
  	// response from `GetStakingEstimationFee`: GetStakingEstimationFee201Response
  	fmt.Fprintf(os.Stdout, "Response from `StakingsAPI.GetStakingEstimationFee`: %v\n", resp)
  }

  ```

  ```javascript JavaScript
  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 = {
    'GetStakingEstimationFeeRequest': new CoboWaas2.GetStakingEstimationFeeRequest()
  };
  apiInstance.getStakingEstimationFee(opts).then((data) => {
    console.log('API called successfully. Returned data: ' + data);
  }, (error) => {
    console.error(error);
  });
  ```
</RequestExample>
