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

# Estimate tokenization operation fee

> This operation estimates the fee required for tokenization operations.
For EVM-based chains, this calculates the gas cost for the specified operation.


<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.estimated_fee import EstimatedFee
  from cobo_waas2.models.tokenization_estimate_fee_request import (
      TokenizationEstimateFeeRequest,
  )
  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.TokenizationApi(api_client)
      tokenization_estimate_fee_request = cobo_waas2.TokenizationEstimateFeeRequest(
          operation_params=cobo_waas2.TokenizationEstimateFeeRequestOperationParams(
              cobo_waas2.TokenizationIssueEstimateFeeParams(
                  chain_id="ETH",
                  source=cobo_waas2.TokenizationTokenOperationSource(
                      cobo_waas2.TokenizationMpcOperationSource(
                          source_type="Org-Controlled",
                          wallet_id="f47ac10b-58cc-4372-a567-0e02b2c3d479",
                          address="0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
                      )
                  ),
                  token_params=cobo_waas2.TokenizationIssueTokenParamsTokenParams(
                      cobo_waas2.TokenizationERC20TokenParams(
                          standard="ERC20",
                          name="My Awesome Token",
                          symbol="MAT",
                          decimals=18,
                      )
                  ),
                  operation_type="Issue",
              )
          )
      )

      try:
          # Estimate tokenization operation fee
          api_response = api_instance.estimate_tokenization_fee(
              tokenization_estimate_fee_request
          )
          print("The response of TokenizationApi->estimate_tokenization_fee:\n")
          pprint(api_response)
      except Exception as e:
          print(
              "Exception when calling TokenizationApi->estimate_tokenization_fee: %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.TokenizationApi;
  import com.cobo.waas2.model.*;
  import java.util.UUID;

  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>");
      TokenizationApi apiInstance = new TokenizationApi();
      TokenizationEstimateFeeRequest tokenizationEstimateFeeRequest =
          new TokenizationEstimateFeeRequest()
              .operationParams(
                  new TokenizationEstimateFeeRequestOperationParams(
                      new TokenizationIssueEstimateFeeParams()
                          .chainId("ETH")
                          .source(
                              new TokenizationTokenOperationSource(
                                  new TokenizationMpcOperationSource()
                                      .sourceType(TokenizationOperationSourceType.ORG_CONTROLLED)
                                      .walletId(
                                          UUID.fromString("f47ac10b-58cc-4372-a567-0e02b2c3d479"))
                                      .address("0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045")))
                          .tokenParams(
                              new TokenizationIssueTokenParamsTokenParams(
                                  new TokenizationERC20TokenParams()
                                      .standard(TokenizationTokenStandard.ERC20)
                                      .name("My Awesome Token")
                                      .symbol("MAT")
                                      .decimals(18)))
                          .operationType(TokenizationOperationType.ISSUE)));
      try {
        EstimatedFee result = apiInstance.estimateTokenizationFee(tokenizationEstimateFeeRequest);
        System.out.println(result);
      } catch (ApiException e) {
        System.err.println("Exception when calling TokenizationApi#estimateTokenizationFee");
        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() {
  	tokenizationEstimateFeeRequest := *coboWaas2.NewTokenizationEstimateFeeRequest(coboWaas2.TokenizationEstimateFeeRequest_operation_params{TokenizationBurnEstimateFeeParams: coboWaas2.NewTokenizationBurnEstimateFeeParams(coboWaas2.TokenizationTokenOperationSource{TokenizationMpcOperationSource: coboWaas2.NewTokenizationMpcOperationSource(coboWaas2.TokenizationOperationSourceType("Org-Controlled"), "f47ac10b-58cc-4372-a567-0e02b2c3d479", "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045")}, []coboWaas2.TokenizationBurnTokenParamsBurnsInner{*coboWaas2.NewTokenizationBurnTokenParamsBurnsInner("0.99", "0x051A924H4dCb264226d7B036C2893a0D344")}, coboWaas2.TokenizationOperationType("Issue"), "8a4f9324-ef2a-43cf-9f0e-d7f99999d3e8")})

  	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.TokenizationAPI.EstimateTokenizationFee(ctx).
  		TokenizationEstimateFeeRequest(tokenizationEstimateFeeRequest).
  		Execute()
  	if err != nil {
  		fmt.Fprintf(
  			os.Stderr,
  			"Error when calling `TokenizationAPI.EstimateTokenizationFee``: %v\n",
  			err,
  		)
  		fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
  	}
  	// response from `EstimateTokenizationFee`: EstimatedFee
  	fmt.Fprintf(os.Stdout, "Response from `TokenizationAPI.EstimateTokenizationFee`: %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.TokenizationApi();
  const TokenizationEstimateFeeRequest =
    new CoboWaas2.TokenizationEstimateFeeRequest();
  apiInstance.estimateTokenizationFee(TokenizationEstimateFeeRequest).then(
    (data) => {
      console.log("API called successfully. Returned data: " + data);
    },
    (error) => {
      console.error(error);
    },
  );

  ```
</RequestExample>


## OpenAPI

````yaml post /tokenization/estimate_fee
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:
  /tokenization/estimate_fee:
    post:
      tags:
        - Tokenization
      summary: Estimate tokenization operation fee
      description: >
        This operation estimates the fee required for tokenization operations.

        For EVM-based chains, this calculates the gas cost for the specified
        operation.
      operationId: estimate_tokenization_fee
      requestBody:
        $ref: '#/components/requestBodies/tokenizationEstimateFeeBody'
      responses:
        '201':
          $ref: '#/components/responses/estimateTokenizationFeeResponse'
        4XX:
          $ref: '#/components/responses/badRequestError'
        5XX:
          $ref: '#/components/responses/internalServerError'
      security:
        - CoboAuth: []
        - OAuth2:
            - transaction.estimate_fee
components:
  requestBodies:
    tokenizationEstimateFeeBody:
      description: The request body to estimate tokenization operation fee.
      required: true
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/TokenizationEstimateFeeRequest'
  responses:
    estimateTokenizationFeeResponse:
      description: Successfully retrieved the estimated fee for token issuance.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/EstimatedFee'
    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:
    TokenizationEstimateFeeRequest:
      type: object
      properties:
        operation_params:
          oneOf:
            - $ref: '#/components/schemas/TokenizationIssueEstimateFeeParams'
            - $ref: '#/components/schemas/TokenizationMintEstimateFeeParams'
            - $ref: '#/components/schemas/TokenizationBurnEstimateFeeParams'
            - $ref: '#/components/schemas/TokenizationPauseEstimateFeeParams'
            - $ref: '#/components/schemas/TokenizationUnpauseEstimateFeeParams'
            - $ref: >-
                #/components/schemas/TokenizationUpdateAllowlistAddressesEstimateFeeParams
            - $ref: >-
                #/components/schemas/TokenizationUpdateBlocklistAddressesEstimateFeeParams
            - $ref: >-
                #/components/schemas/TokenizationToggleAllowlistEstimateFeeParams
            - $ref: '#/components/schemas/TokenizationContractCallEstimateFeeParams'
            - $ref: >-
                #/components/schemas/TokenizationUpdatePermissionsEstimateFeeParams
          discriminator:
            propertyName: operation_type
            mapping:
              Issue:
                $ref: '#/components/schemas/TokenizationIssueEstimateFeeParams'
              Mint:
                $ref: '#/components/schemas/TokenizationMintEstimateFeeParams'
              Burn:
                $ref: '#/components/schemas/TokenizationBurnEstimateFeeParams'
              Pause:
                $ref: '#/components/schemas/TokenizationPauseEstimateFeeParams'
              Unpause:
                $ref: '#/components/schemas/TokenizationUnpauseEstimateFeeParams'
              UpdateAllowlistAddresses:
                $ref: >-
                  #/components/schemas/TokenizationUpdateAllowlistAddressesEstimateFeeParams
              UpdateBlocklistAddresses:
                $ref: >-
                  #/components/schemas/TokenizationUpdateBlocklistAddressesEstimateFeeParams
              ToggleAllowlist:
                $ref: >-
                  #/components/schemas/TokenizationToggleAllowlistEstimateFeeParams
              ContractCall:
                $ref: '#/components/schemas/TokenizationContractCallEstimateFeeParams'
              UpdatePermissions:
                $ref: >-
                  #/components/schemas/TokenizationUpdatePermissionsEstimateFeeParams
      required:
        - operation_params
    EstimatedFee:
      oneOf:
        - $ref: '#/components/schemas/EstimatedFixedFee'
        - $ref: '#/components/schemas/EstimatedEvmEip1559Fee'
        - $ref: '#/components/schemas/EstimatedEvmLegacyFee'
        - $ref: '#/components/schemas/EstimatedUtxoFee'
        - $ref: '#/components/schemas/EstimatedSOLFee'
        - $ref: '#/components/schemas/EstimatedFILFee'
      discriminator:
        propertyName: fee_type
        mapping:
          Fixed:
            $ref: '#/components/schemas/EstimatedFixedFee'
          EVM_EIP_1559:
            $ref: '#/components/schemas/EstimatedEvmEip1559Fee'
          EVM_Legacy:
            $ref: '#/components/schemas/EstimatedEvmLegacyFee'
          UTXO:
            $ref: '#/components/schemas/EstimatedUtxoFee'
          SOL:
            $ref: '#/components/schemas/EstimatedSOLFee'
          FIL:
            $ref: '#/components/schemas/EstimatedFILFee'
    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
    TokenizationIssueEstimateFeeParams:
      title: Issue
      allOf:
        - $ref: '#/components/schemas/TokenizationIssueTokenParams'
        - type: object
          properties:
            operation_type:
              $ref: '#/components/schemas/TokenizationOperationType'
            request_id:
              type: string
              description: >-
                The request ID that is used to track a transaction request. The
                request ID is provided by you and must be unique within your
                organization.
              example: f47ac10b-58cc-4372-a567-0e02b2c3d479
          required:
            - operation_type
    TokenizationMintEstimateFeeParams:
      title: Mint
      allOf:
        - $ref: '#/components/schemas/TokenizationMintTokenParams'
        - type: object
          properties:
            operation_type:
              $ref: '#/components/schemas/TokenizationOperationType'
            token_id:
              type: string
              description: The ID of the token.
              example: 8a4f9324-ef2a-43cf-9f0e-d7f99999d3e8
            request_id:
              type: string
              description: >-
                The request ID that is used to track a transaction request. The
                request ID is provided by you and must be unique within your
                organization.
              example: f47ac10b-58cc-4372-a567-0e02b2c3d479
          required:
            - operation_type
            - token_id
    TokenizationBurnEstimateFeeParams:
      title: Burn
      allOf:
        - $ref: '#/components/schemas/TokenizationBurnTokenParams'
        - type: object
          properties:
            operation_type:
              $ref: '#/components/schemas/TokenizationOperationType'
            token_id:
              type: string
              description: The ID of the token.
              example: 8a4f9324-ef2a-43cf-9f0e-d7f99999d3e8
            request_id:
              type: string
              description: >-
                The request ID that is used to track a transaction request. The
                request ID is provided by you and must be unique within your
                organization.
              example: f47ac10b-58cc-4372-a567-0e02b2c3d479
          required:
            - operation_type
            - token_id
    TokenizationPauseEstimateFeeParams:
      title: Pause
      allOf:
        - $ref: '#/components/schemas/TokenizationPauseTokenParams'
        - type: object
          properties:
            operation_type:
              $ref: '#/components/schemas/TokenizationOperationType'
            token_id:
              type: string
              description: The ID of the token.
              example: 8a4f9324-ef2a-43cf-9f0e-d7f99999d3e8
            request_id:
              type: string
              description: >-
                The request ID that is used to track a transaction request. The
                request ID is provided by you and must be unique within your
                organization.
              example: f47ac10b-58cc-4372-a567-0e02b2c3d479
          required:
            - operation_type
            - token_id
    TokenizationUnpauseEstimateFeeParams:
      title: Unpause
      allOf:
        - $ref: '#/components/schemas/TokenizationUnpauseTokenParams'
        - type: object
          properties:
            operation_type:
              $ref: '#/components/schemas/TokenizationOperationType'
            token_id:
              type: string
              description: The ID of the token.
              example: 8a4f9324-ef2a-43cf-9f0e-d7f99999d3e8
            request_id:
              type: string
              description: >-
                The request ID that is used to track a transaction request. The
                request ID is provided by you and must be unique within your
                organization.
              example: f47ac10b-58cc-4372-a567-0e02b2c3d479
          required:
            - operation_type
            - token_id
    TokenizationUpdateAllowlistAddressesEstimateFeeParams:
      title: Update allowlist addresses
      allOf:
        - $ref: '#/components/schemas/TokenizationUpdateAllowlistAddressesParams'
        - type: object
          properties:
            operation_type:
              $ref: '#/components/schemas/TokenizationOperationType'
            token_id:
              type: string
              description: The ID of the token.
              example: 8a4f9324-ef2a-43cf-9f0e-d7f99999d3e8
            request_id:
              type: string
              description: >-
                The request ID that is used to track a transaction request. The
                request ID is provided by you and must be unique within your
                organization.
              example: f47ac10b-58cc-4372-a567-0e02b2c3d479
          required:
            - operation_type
            - token_id
    TokenizationUpdateBlocklistAddressesEstimateFeeParams:
      title: Update blocklist addresses
      allOf:
        - $ref: '#/components/schemas/TokenizationUpdateBlocklistAddressesParams'
        - type: object
          properties:
            operation_type:
              $ref: '#/components/schemas/TokenizationOperationType'
            token_id:
              type: string
              description: The ID of the token.
              example: 8a4f9324-ef2a-43cf-9f0e-d7f99999d3e8
            request_id:
              type: string
              description: >-
                The request ID that is used to track a transaction request. The
                request ID is provided by you and must be unique within your
                organization.
              example: f47ac10b-58cc-4372-a567-0e02b2c3d479
          required:
            - operation_type
            - token_id
    TokenizationToggleAllowlistEstimateFeeParams:
      title: Toggle allowlist
      allOf:
        - $ref: '#/components/schemas/TokenizationAllowlistActivationParams'
        - type: object
          properties:
            operation_type:
              $ref: '#/components/schemas/TokenizationOperationType'
            token_id:
              type: string
              description: The ID of the token.
              example: 8a4f9324-ef2a-43cf-9f0e-d7f99999d3e8
            request_id:
              type: string
              description: >-
                The request ID that is used to track a transaction request. The
                request ID is provided by you and must be unique within your
                organization.
              example: f47ac10b-58cc-4372-a567-0e02b2c3d479
          required:
            - operation_type
            - token_id
    TokenizationContractCallEstimateFeeParams:
      title: Contract call
      allOf:
        - $ref: '#/components/schemas/TokenizationContractCallParams'
        - type: object
          properties:
            operation_type:
              $ref: '#/components/schemas/TokenizationOperationType'
            token_id:
              type: string
              description: The ID of the token.
              example: 8a4f9324-ef2a-43cf-9f0e-d7f99999d3e8
            request_id:
              type: string
              description: >-
                The request ID that is used to track a transaction request. The
                request ID is provided by you and must be unique within your
                organization.
              example: f47ac10b-58cc-4372-a567-0e02b2c3d479
          required:
            - operation_type
            - token_id
    TokenizationUpdatePermissionsEstimateFeeParams:
      allOf:
        - $ref: '#/components/schemas/TokenizationUpdatePermissionsParams'
        - type: object
          properties:
            operation_type:
              $ref: '#/components/schemas/TokenizationOperationType'
            token_id:
              type: string
              description: The ID of the token.
              example: 8a4f9324-ef2a-43cf-9f0e-d7f99999d3e8
            request_id:
              type: string
              description: >-
                The request ID that is used to track a transaction request. The
                request ID is provided by you and must be unique within your
                organization.
              example: f47ac10b-58cc-4372-a567-0e02b2c3d479
          required:
            - operation_type
            - token_id
    EstimatedFixedFee:
      type: object
      description: >
        The estimated transaction fee based on the fixed fee model.


        For more details about the fixed fee model, see [Fee
        models](https://www.cobo.com/developers/v2/guides/transactions/estimate-fees#fee-models).
      title: Fixed
      required:
        - fee_type
        - token_id
        - fee_amount
      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
            is_loop:
              type: boolean
              description: >
                Whether the transaction was executed as a [Cobo
                Loop](https://manuals.cobo.com/en/portal/custodial-wallets/cobo-loop)
                transfer.

                - `true`: The transaction was executed as a Cobo Loop transfer.

                - `false`: The transaction was not executed as a Cobo Loop
                transfer.
              example: false
        - $ref: '#/components/schemas/FeeAmount'
    EstimatedEvmEip1559Fee:
      type: object
      description: >
        The estimated transaction fee based on the EIP-1559 fee model.


        For more details about the EIP-1559 fee model, see [Fee
        models](https://www.cobo.com/developers/v2/guides/transactions/estimate-fees#fee-models).
      title: EVM_EIP_1559
      required:
        - fee_type
        - token_id
        - recommended
      properties:
        fee_type:
          $ref: '#/components/schemas/FeeType'
        token_id:
          type: string
          description: The token used to pay the transaction fee.
          example: ETH
        slow:
          required:
            - max_fee_per_gas
            - max_priority_fee_per_gas
            - gas_limit
          allOf:
            - $ref: '#/components/schemas/EvmEip1559FeeBasePrice'
            - $ref: '#/components/schemas/FeeGasLimit'
            - $ref: '#/components/schemas/FeeReserved'
        recommended:
          required:
            - max_fee_per_gas
            - max_priority_fee_per_gas
            - gas_limit
          allOf:
            - $ref: '#/components/schemas/EvmEip1559FeeBasePrice'
            - $ref: '#/components/schemas/FeeGasLimit'
            - $ref: '#/components/schemas/FeeReserved'
        fast:
          required:
            - max_fee_per_gas
            - max_priority_fee_per_gas
            - gas_limit
          allOf:
            - $ref: '#/components/schemas/EvmEip1559FeeBasePrice'
            - $ref: '#/components/schemas/FeeGasLimit'
            - $ref: '#/components/schemas/FeeReserved'
    EstimatedEvmLegacyFee:
      type: object
      description: >
        The estimated transaction fee based on the Legacy fee model.


        For more details about the Legacy fee model, see [Fee
        models](https://www.cobo.com/developers/v2/guides/transactions/estimate-fees#fee-models).
      title: EVM_Legacy
      required:
        - fee_type
        - token_id
        - recommended
      properties:
        fee_type:
          $ref: '#/components/schemas/FeeType'
        token_id:
          type: string
          description: The token used to pay the transaction fee.
          example: ETH
        slow:
          required:
            - gas_price
            - gas_limit
          allOf:
            - $ref: '#/components/schemas/EvmLegacyFeeBasePrice'
            - $ref: '#/components/schemas/FeeGasLimit'
            - $ref: '#/components/schemas/FeeReserved'
        recommended:
          required:
            - gas_price
            - gas_limit
          allOf:
            - $ref: '#/components/schemas/EvmLegacyFeeBasePrice'
            - $ref: '#/components/schemas/FeeGasLimit'
            - $ref: '#/components/schemas/FeeReserved'
        fast:
          required:
            - gas_price
            - gas_limit
          allOf:
            - $ref: '#/components/schemas/EvmLegacyFeeBasePrice'
            - $ref: '#/components/schemas/FeeGasLimit'
            - $ref: '#/components/schemas/FeeReserved'
    EstimatedUtxoFee:
      type: object
      description: >
        The estimated transaction fee for UTXO-based chains.


        For more details about the UTXO fee model, see [Fee
        models](https://www.cobo.com/developers/v2/guides/transactions/estimate-fees#fee-models).
      title: UTXO
      required:
        - fee_type
        - token_id
        - recommended
      properties:
        fee_type:
          $ref: '#/components/schemas/FeeType'
        token_id:
          type: string
          description: The token used to pay the transaction fee.
          example: BTC
        slow:
          required:
            - fee_rate
            - fee_amount
          allOf:
            - $ref: '#/components/schemas/UtxoFeeBasePrice'
            - $ref: '#/components/schemas/FeeAmount'
        recommended:
          required:
            - fee_rate
            - fee_amount
          allOf:
            - $ref: '#/components/schemas/UtxoFeeBasePrice'
            - $ref: '#/components/schemas/FeeAmount'
        fast:
          required:
            - fee_rate
            - fee_amount
          allOf:
            - $ref: '#/components/schemas/UtxoFeeBasePrice'
            - $ref: '#/components/schemas/FeeAmount'
    EstimatedSOLFee:
      type: object
      description: >
        The estimated transaction fee based on the SOL fee model.


        For more details about the SOL fee model, see [Fee
        models](https://www.cobo.com/developers/v2/guides/transactions/estimate-fees#fee-models).
      title: SOL
      required:
        - fee_type
        - token_id
        - recommended
      properties:
        fee_type:
          $ref: '#/components/schemas/FeeType'
        token_id:
          type: string
          description: The token used to pay the transaction fee.
          example: ETH
        slow:
          required:
            - compute_unit_price
            - compute_unit_limit
            - base_fee
          allOf:
            - $ref: '#/components/schemas/SOLComputeUnit'
            - $ref: '#/components/schemas/SOLBase'
        recommended:
          required:
            - compute_unit_price
            - compute_unit_limit
            - base_fee
          allOf:
            - $ref: '#/components/schemas/SOLComputeUnit'
            - $ref: '#/components/schemas/SOLBase'
        fast:
          required:
            - compute_unit_price
            - compute_unit_limit
            - base_fee
          allOf:
            - $ref: '#/components/schemas/SOLComputeUnit'
            - $ref: '#/components/schemas/SOLBase'
    EstimatedFILFee:
      type: object
      description: >
        The estimated transaction fee based on the FIL fee model.


        For more details about the FIL fee model, see [Fee
        models](https://www.cobo.com/developers/v2/guides/transactions/estimate-fees#fee-models).
      title: FIL
      required:
        - fee_type
        - token_id
        - recommended
      properties:
        fee_type:
          $ref: '#/components/schemas/FeeType'
        token_id:
          type: string
          description: The token used to pay the transaction fee.
          example: ETH
        slow:
          required:
            - gas_premium
            - gas_fee_cap
            - gas_base
            - gas_limit
          allOf:
            - $ref: '#/components/schemas/FILPrice'
            - $ref: '#/components/schemas/FILBase'
        recommended:
          required:
            - gas_premium
            - gas_fee_cap
            - gas_base
            - gas_limit
          allOf:
            - $ref: '#/components/schemas/FILPrice'
            - $ref: '#/components/schemas/FILBase'
        fast:
          required:
            - gas_premium
            - gas_fee_cap
            - gas_base
            - gas_limit
          allOf:
            - $ref: '#/components/schemas/FILPrice'
            - $ref: '#/components/schemas/FILBase'
    TokenizationIssueTokenParams:
      type: object
      properties:
        chain_id:
          type: string
          description: The chain ID where the token will be issued.
          example: ETH
        source:
          $ref: '#/components/schemas/TokenizationTokenOperationSource'
        token_params:
          oneOf:
            - $ref: '#/components/schemas/TokenizationERC20TokenParams'
            - $ref: '#/components/schemas/TokenizationERC20WrappedTokenParams'
            - $ref: '#/components/schemas/TokenizationSOLTokenParams'
            - $ref: '#/components/schemas/TokenizationSOLWrappedTokenParams'
          discriminator:
            propertyName: standard
            mapping:
              ERC20:
                $ref: '#/components/schemas/TokenizationERC20TokenParams'
              SPLToken2022:
                $ref: '#/components/schemas/TokenizationSOLTokenParams'
              ERC20Wrapper:
                $ref: '#/components/schemas/TokenizationERC20WrappedTokenParams'
              SOLWrapper:
                $ref: '#/components/schemas/TokenizationSOLWrappedTokenParams'
      required:
        - chain_id
        - source
        - token_params
    TokenizationOperationType:
      type: string
      description: The type of tokenization operation.
      enum:
        - Issue
        - Mint
        - Burn
        - Pause
        - Unpause
        - UpdateAllowlistAddresses
        - UpdateBlocklistAddresses
        - ToggleAllowlist
        - ContractCall
        - UpdatePermissions
      example: Issue
    TokenizationMintTokenParams:
      type: object
      properties:
        source:
          $ref: '#/components/schemas/TokenizationTokenOperationSource'
        mints:
          type: array
          description: >-
            Details for each token mint, including amount and address to mint
            to.
          items:
            type: object
            properties:
              amount:
                type: string
                description: The amount of tokens to mint for this recipient.
                example: '0.99'
              to_address:
                type: string
                description: The address to mint tokens to for this recipient.
                example: 0x051A924H4dCb264226d7B036C2893a0D344
            required:
              - amount
              - to_address
      required:
        - source
        - mints
    TokenizationBurnTokenParams:
      type: object
      properties:
        source:
          $ref: '#/components/schemas/TokenizationTokenOperationSource'
        burns:
          type: array
          description: >-
            Details for each token burn, including amount and address to burn
            from.
          items:
            type: object
            properties:
              amount:
                type: string
                description: The amount of tokens to burn.
                example: '0.99'
              from_address:
                type: string
                description: The address to burn tokens from.
                example: 0x051A924H4dCb264226d7B036C2893a0D344
            required:
              - amount
              - from_address
      required:
        - source
        - burns
    TokenizationPauseTokenParams:
      type: object
      properties:
        source:
          $ref: '#/components/schemas/TokenizationTokenOperationSource'
      required:
        - source
    TokenizationUnpauseTokenParams:
      type: object
      properties:
        source:
          $ref: '#/components/schemas/TokenizationTokenOperationSource'
      required:
        - source
    TokenizationUpdateAllowlistAddressesParams:
      type: object
      properties:
        action:
          $ref: '#/components/schemas/TokenizationUpdateAddressAction'
        source:
          $ref: '#/components/schemas/TokenizationTokenOperationSource'
        addresses:
          type: array
          items:
            type: object
            properties:
              address:
                type: string
                description: The address to add or remove.
                example: 0x789abc...
              note:
                type: string
                description: >-
                  An optional note for the address, primarily used when adding
                  addresses.
                example: Allowed address for trusted partner
            required:
              - address
          description: >-
            A list of addresses to manage. For 'add' operations, notes can be
            provided. For 'remove' operations, notes are ignored.
          example:
            - address: 0x789abc...
              note: reason for allowing
            - address: 0xdef012...
      required:
        - action
        - source
        - addresses
    TokenizationUpdateBlocklistAddressesParams:
      type: object
      properties:
        action:
          $ref: '#/components/schemas/TokenizationUpdateAddressAction'
        source:
          $ref: '#/components/schemas/TokenizationTokenOperationSource'
        addresses:
          type: array
          items:
            type: object
            properties:
              address:
                type: string
                description: The address to add or remove.
                example: 0x789abc...
              note:
                type: string
                description: >-
                  An optional note for the address, primarily used when adding
                  addresses.
                example: Blocklist address for malicious activity
            required:
              - address
          description: >-
            A list of addresses to manage. For 'add' operations, notes can be
            provided. For 'remove' operations, notes are ignored.
          example:
            - address: 0x789abc...
              note: reason for blocklisting
            - address: 0xdef012...
      required:
        - action
        - source
        - addresses
    TokenizationAllowlistActivationParams:
      type: object
      properties:
        source:
          $ref: '#/components/schemas/TokenizationTokenOperationSource'
        activation:
          type: boolean
          description: Whether to activate the allowlist feature for the token.
          example: true
      required:
        - source
        - activation
    TokenizationContractCallParams:
      type: object
      description: The information about the contract call.
      required:
        - calldata
      properties:
        source:
          $ref: '#/components/schemas/TokenizationTokenOperationSource'
        data:
          oneOf:
            - $ref: '#/components/schemas/TokenizationEvmContractCallParams'
            - $ref: '#/components/schemas/TokenizationSolContractCallParams'
          discriminator:
            propertyName: type
            mapping:
              EVM_Contract:
                $ref: '#/components/schemas/TokenizationEvmContractCallParams'
              SOL_Contract:
                $ref: '#/components/schemas/TokenizationSolContractCallParams'
    TokenizationUpdatePermissionsParams:
      type: object
      properties:
        source:
          $ref: '#/components/schemas/TokenizationTokenOperationSource'
        addresses:
          type: array
          items:
            $ref: '#/components/schemas/TokenizationUpdateAddressPermissions'
      required:
        - source
        - addresses
    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).
    FeeAmount:
      type: object
      description: The transaction fee.
      properties:
        fee_amount:
          type: string
          description: The transaction fee that you need to pay for the transaction.
          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'
    FeeGasLimit:
      type: object
      properties:
        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'
    FeeReserved:
      type: object
      properties:
        reserved_fee:
          type: string
          description: >-
            The estimated fee required for submitting the transaction data to L1
            (Layer 1), measured in wei.
          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'
    SOLBase:
      type: object
      properties:
        base_fee:
          type: string
          description: >-
            A fixed fee charged per signature. The default is 5,000 lamports per
            signature.
          example: '0.000005'
        rent_amount:
          type: string
          description: >-
            The rent fee charged by the network to store non–rent-exempt
            accounts on-chain. It is deducted periodically until the account
            maintains the minimum balance required for rent exemption.
          example: '0.00001 '
    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'
    FILBase:
      type: object
      properties:
        gas_base:
          type: string
          description: >-
            The minimum fee required for a transaction to be included in a
            block. The base fee is dynamically adjusted based on network
            congestion to maintain target block utilization. It is burned rather
            than paid to miners, reducing the total Filecoin supply over time.
          example: '0.0002'
    TokenizationTokenOperationSource:
      oneOf:
        - $ref: '#/components/schemas/TokenizationMpcOperationSource'
        - $ref: '#/components/schemas/TokenizationWeb3OperationSource'
      discriminator:
        propertyName: source_type
        mapping:
          Org-Controlled:
            $ref: '#/components/schemas/TokenizationMpcOperationSource'
          Web3:
            $ref: '#/components/schemas/TokenizationWeb3OperationSource'
    TokenizationERC20TokenParams:
      title: ERC20
      type: object
      properties:
        standard:
          $ref: '#/components/schemas/TokenizationTokenStandard'
        name:
          type: string
          description: The name of the token.
          example: My Awesome Token
        symbol:
          type: string
          description: The symbol of the token.
          example: MAT
        decimals:
          type: integer
          format: int32
          description: The number of decimals for the token (0-18).
          minimum: 0
          maximum: 18
          example: 18
        token_access_activated:
          type: boolean
          description: >-
            Whether the allowlist feature is activated for the token. When
            activated, only addresses in the allowlist can perform token
            operations.
          default: false
          example: false
        permissions:
          $ref: '#/components/schemas/TokenizationERC20TokenPermissionParams'
      required:
        - standard
        - name
        - symbol
        - decimals
    TokenizationERC20WrappedTokenParams:
      title: ERC20 Wrapped Token
      type: object
      properties:
        standard:
          $ref: '#/components/schemas/TokenizationTokenStandard'
        name:
          type: string
          description: The name of the token.
          example: My Awesome Token
        symbol:
          type: string
          description: The symbol of the token.
          example: MAT
        permissions:
          $ref: '#/components/schemas/TokenizationERC20WrappedTokenPermissionParams'
        token_access_activated:
          type: boolean
          description: >-
            Whether the allowlist feature is activated for the token. When
            activated, only addresses in the allowlist can perform token
            operations.
          default: false
          example: false
        underlying_token:
          type: string
          description: >-
            The address of the underlying token that this tokenized asset
            represents.
          example: '0xdac17f958d2ee523a2206206994597c13d831ec7'
      required:
        - standard
        - name
        - symbol
        - decimals
        - underlying_token
    TokenizationSOLTokenParams:
      title: Solana
      type: object
      properties:
        standard:
          $ref: '#/components/schemas/TokenizationTokenStandard'
        name:
          type: string
          description: The name of the token.
          example: My Awesome Token
        symbol:
          type: string
          description: The symbol of the token.
          example: MAT
        decimals:
          type: integer
          format: int32
          description: The number of decimals for the token (0-18).
          minimum: 0
          maximum: 18
          example: 18
        token_access_activated:
          type: boolean
          description: >-
            Whether the allowlist feature is activated for the token. When
            activated, only addresses in the allowlist can perform token
            operations.
          default: false
          example: false
        permissions:
          $ref: '#/components/schemas/TokenizationSolTokenPermissionParams'
      required:
        - standard
        - name
        - symbol
        - decimals
    TokenizationSOLWrappedTokenParams:
      title: Solana Wrapped Token
      type: object
      properties:
        standard:
          $ref: '#/components/schemas/TokenizationTokenStandard'
        name:
          type: string
          description: The name of the token.
          example: My Awesome Token
        symbol:
          type: string
          description: The symbol of the token.
          example: MAT
        underlying_token:
          type: string
          description: >-
            The address of the underlying token that this tokenized asset
            represents.
          example: 9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM
        token_access_activated:
          type: boolean
          description: >-
            Whether the allowlist feature is activated for the token. When
            activated, only addresses in the allowlist can perform token
            operations.
          default: false
          example: false
        permissions:
          $ref: '#/components/schemas/TokenizationSolWrappedTokenPermissionParams'
      required:
        - standard
        - name
        - symbol
        - underlying_token
    TokenizationUpdateAddressAction:
      type: string
      description: The operation to perform on the blocklist or allowlist.
      enum:
        - Grant
        - Revoke
    TokenizationEvmContractCallParams:
      type: object
      description: The information about the EVM contract call.
      required:
        - calldata
      properties:
        type:
          $ref: '#/components/schemas/TokenizationContractCallType'
        calldata:
          type: string
          description: >
            The data that is used to invoke a specific function or method within
            the specified contract at the destination address.
          example: >-
            0xa22cb4650000000000000000000000001e0049783f008a0085193e00003d00cd54003c71000000000000000000000000000000000000000000000000000000000000DEMO
        value:
          type: string
          description: >
            The transfer amount. For example, if you trade 1.5 ETH, then the
            value is `1.5`.
          example: '1.5'
    TokenizationSolContractCallParams:
      type: object
      description: The information about the Solana program call.
      required:
        - instructions
      properties:
        type:
          $ref: '#/components/schemas/TokenizationContractCallType'
        instructions:
          type: array
          items:
            $ref: '#/components/schemas/SolContractCallInstruction'
    TokenizationUpdateAddressPermissions:
      type: object
      required:
        - action
        - address
        - permissions
      properties:
        address:
          type: string
          description: The address to manage permissions for.
          example: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045'
        action:
          $ref: '#/components/schemas/TokenizationPermissionAction'
        permissions:
          type: array
          items:
            $ref: '#/components/schemas/TokenizationTokenPermissionType'
          description: The list of permissions to be applied.
    TokenizationMpcOperationSource:
      title: MPC Wallets
      type: object
      properties:
        source_type:
          $ref: '#/components/schemas/TokenizationOperationSourceType'
        wallet_id:
          type: string
          format: uuid
          example: f47ac10b-58cc-4372-a567-0e02b2c3d479
          description: The wallet ID.
        address:
          type: string
          description: The wallet address used to interact with the token contract.
          example: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045'
      required:
        - source_type
        - wallet_id
        - address
    TokenizationWeb3OperationSource:
      title: Web3
      type: object
      properties:
        source_type:
          $ref: '#/components/schemas/TokenizationOperationSourceType'
        wallet_id:
          type: string
          format: uuid
          example: f47ac10b-58cc-4372-a567-0e02b2c3d479
          description: The wallet ID.
        address:
          type: string
          description: The wallet address used to interact with the token contract.
          example: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045'
      required:
        - source_type
        - wallet_id
        - address
    TokenizationTokenStandard:
      type: string
      description: The standard of token to create.
      enum:
        - ERC20
        - SPLToken2022
        - ERC20Wrapper
        - SOLWrapper
      example: ERC20
    TokenizationERC20TokenPermissionParams:
      type: object
      description: >-
        Role-based permission settings for token contract. If not provided, all
        permissions will be granted to the issuing wallet by default.
      properties:
        admin:
          type: array
          description: List of addresses for the admin role.
          items:
            type: string
            description: Wallet address
            example: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045'
          example:
            - '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045'
            - '0x742d35Cc6634C0532925a3b8D4C2C4e4C7C6B5f6'
        minter:
          type: array
          description: List of addresses for the minter role.
          items:
            type: string
            description: Wallet address
            example: '0x742d35Cc6634C0532925a3b8D4C2C4e4C7C6B5f6'
          example:
            - '0x742d35Cc6634C0532925a3b8D4C2C4e4C7C6B5f6'
            - '0x1FcceD80Cbc2750e0276a53038845eC541E87fa2'
        burner:
          type: array
          description: List of addresses for the burner role.
          items:
            type: string
            description: Wallet address
            example: '0x1FcceD80Cbc2750e0276a53038845eC541E87fa2'
          example:
            - '0x1FcceD80Cbc2750e0276a53038845eC541E87fa2'
            - '0xfc5495292a162810175fbda23697b5a682ba352a'
        manager:
          type: array
          description: List of addresses for the manager role.
          items:
            type: string
            description: Wallet address
            example: '0x742d35Cc6634C0532925a3b8D4C2C4e4C7C6B5f6'
          example:
            - '0x742d35Cc6634C0532925a3b8D4C2C4e4C7C6B5f6'
            - '0x1FcceD80Cbc2750e0276a53038845eC541E87fa2'
        pauser:
          type: array
          description: List of addresses for the pauser role.
          items:
            type: string
            description: Wallet address
            example: '0x742d35Cc6634C0532925a3b8D4C2C4e4C7C6B5f6'
          example:
            - '0x742d35Cc6634C0532925a3b8D4C2C4e4C7C6B5f6'
            - '0x1FcceD80Cbc2750e0276a53038845eC541E87fa2'
        salvager:
          type: array
          description: List of addresses for the salvager role.
          items:
            type: string
            description: Wallet address
            example: '0x742d35Cc6634C0532925a3b8D4C2C4e4C7C6B5f6'
          example:
            - '0x742d35Cc6634C0532925a3b8D4C2C4e4C7C6B5f6'
            - '0x1FcceD80Cbc2750e0276a53038845eC541E87fa2'
        upgrader:
          type: array
          description: List of addresses for the upgrader role.
          items:
            type: string
            description: Wallet address
            example: '0x742d35Cc6634C0532925a3b8D4C2C4e4C7C6B5f6'
          example:
            - '0x742d35Cc6634C0532925a3b8D4C2C4e4C7C6B5f6'
            - '0x1FcceD80Cbc2750e0276a53038845eC541E87fa2'
    TokenizationERC20WrappedTokenPermissionParams:
      type: object
      description: >-
        Role-based permission settings for token contract. If not provided, all
        permissions will be granted to the issuing wallet by default.
      properties:
        admin:
          type: array
          description: List of addresses for the admin role.
          items:
            type: string
            description: Wallet address
            example: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045'
          example:
            - '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045'
            - '0x742d35Cc6634C0532925a3b8D4C2C4e4C7C6B5f6'
        minter:
          type: array
          description: List of addresses for the minter role.
          items:
            type: string
            description: Wallet address
            example: '0x742d35Cc6634C0532925a3b8D4C2C4e4C7C6B5f6'
          example:
            - '0x742d35Cc6634C0532925a3b8D4C2C4e4C7C6B5f6'
            - '0x1FcceD80Cbc2750e0276a53038845eC541E87fa2'
        wrapper:
          type: array
          description: List of addresses for the wrapper role.
          items:
            type: string
            description: Wallet address
            example: '0x742d35Cc6634C0532925a3b8D4C2C4e4C7C6B5f6'
          example:
            - '0x742d35Cc6634C0532925a3b8D4C2C4e4C7C6B5f6'
            - '0x1FcceD80Cbc2750e0276a53038845eC541E87fa2'
        manager:
          type: array
          description: List of addresses for the manager role.
          items:
            type: string
            description: Wallet address
            example: '0x742d35Cc6634C0532925a3b8D4C2C4e4C7C6B5f6'
          example:
            - '0x742d35Cc6634C0532925a3b8D4C2C4e4C7C6B5f6'
            - '0x1FcceD80Cbc2750e0276a53038845eC541E87fa2'
        pauser:
          type: array
          description: List of addresses for the pauser role.
          items:
            type: string
            description: Wallet address
            example: '0x742d35Cc6634C0532925a3b8D4C2C4e4C7C6B5f6'
          example:
            - '0x742d35Cc6634C0532925a3b8D4C2C4e4C7C6B5f6'
            - '0x1FcceD80Cbc2750e0276a53038845eC541E87fa2'
        salvager:
          type: array
          description: List of addresses for the salvager role.
          items:
            type: string
            description: Wallet address
            example: '0x742d35Cc6634C0532925a3b8D4C2C4e4C7C6B5f6'
          example:
            - '0x742d35Cc6634C0532925a3b8D4C2C4e4C7C6B5f6'
            - '0x1FcceD80Cbc2750e0276a53038845eC541E87fa2'
        upgrader:
          type: array
          description: List of addresses for the upgrader role.
          items:
            type: string
            description: Wallet address
            example: '0x742d35Cc6634C0532925a3b8D4C2C4e4C7C6B5f6'
          example:
            - '0x742d35Cc6634C0532925a3b8D4C2C4e4C7C6B5f6'
            - '0x1FcceD80Cbc2750e0276a53038845eC541E87fa2'
    TokenizationSolTokenPermissionParams:
      type: object
      description: >-
        Role-based permission settings for the Solana Token-2022 Program. If not
        provided, all permissions will be granted to the issuing wallet by
        default.
      properties:
        permanent_delegate:
          type: string
          description: >-
            Solana wallet address assigned as the permanent delegate authority.
            It can perform delegated operations on behalf of token holders.
          example: 9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM
        minter:
          type: string
          description: >-
            Solana wallet address assigned as the mint authority. It can mint
            new tokens.
          example: 9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM
        freezer:
          type: string
          description: >-
            Solana wallet address assigned as the freeze authority. It can
            freeze token accounts.
          example: 9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM
        updater:
          type: string
          description: >-
            Solana wallet address assigned as the update authority. It can
            update token metadata.
          example: 9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM
        pauser:
          type: string
          description: >-
            Solana wallet address assigned as the pause authority. It can pause
            or unpause all token activities including transfers, burns, and
            mints.
          example: 9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM
    TokenizationSolWrappedTokenPermissionParams:
      type: object
      description: >-
        Role-based permission settings for Solana wrapped token. The owner is
        automatically set to the address that calls the initialize function
        (typically the issuing wallet) and cannot be specified here. Only the
        wrapper and pauser roles can be configured during initialization.
      properties:
        wrapper:
          type: array
          description: >-
            List of Solana wallet addresses that can perform wrap/unwrap
            operations. Multiple addresses can be assigned this role.
          items:
            type: string
          example:
            - 9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM
            - 7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU
        pauser:
          type: string
          description: >-
            Solana wallet address that acts as a pauser authority for the token.
            This authority can pause token transfers.
          example: 9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM
        freezer:
          type: string
          description: >-
            Solana wallet address that acts as a freezer authority for the
            token. This authority can freeze token accounts.
          example: 9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM
        updater:
          type: string
          description: >-
            Solana wallet address that acts as an updater authority for the
            token. This authority can update token metadata.
          example: 9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM
    TokenizationContractCallType:
      type: string
      enum:
        - EVM_Contract
        - SOL_Contract
      example: EVM_Contract
      description: The type of contract call.
    SolContractCallInstruction:
      title: SOL Instruction
      type: object
      description: The information about the Solana instruction.
      required:
        - accounts
        - data
        - program_id
      properties:
        accounts:
          type: array
          items:
            $ref: '#/components/schemas/SolContractCallAccount'
        data:
          type: string
          description: >
            The Base64-encoded instruction data used for interacting with a
            Solana program.
          example: >-
            37u9WtQpcm6ULa3WRQHmj49EPs4if7o9f1jSRVZpm2dvihR9C8jY4NqEwXUbLwx15HBSNcP1
        program_id:
          type: string
          description: |
            The address of the Solana program (smart contract). 
          example: MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr
    TokenizationPermissionAction:
      type: string
      enum:
        - add
        - remove
        - set
      description: |
        The permission action to perform:
        - `add`: Grant permissions to specified addresses
        - `remove`: Revoke permissions from specified addresses
        - `set`: Set permissions for specified addresses exclusively

        Supported actions by chain:
        - **EVM**: add, remove
        - **Solana Authority**: set
        - **Solana Wrapper**: add, remove
      example: add
    TokenizationTokenPermissionType:
      type: string
      description: >
        The type of permission for token operations. Each permission grants
        specific capabilities:


        - `ManagePermissions`: Ability to grant and revoke permissions to
        addresses.


        - `ManageAccessAndControls`: Ability to manage access control mechanisms
        including allowlist and blocklist operations.


        - `MintTokens`: Ability to mint tokens and increase the total supply.


        - `BurnTokens`: Ability to burn tokens and decrease the total supply.


        - `RecoverTokens`: Ability to recover tokens from specified addresses.


        - `UpgradeContract`: Ability to upgrade the smart contract
        implementation.


        - `PauseContract`: Ability to pause and unpause the contract.


        - `FreezeAccounts`: Ability to freeze and unfreeze addresses.


        - `UpdateMetadata`: Ability to update token metadata.


        - `WrapTokens`: Ability to wrap and unwrap tokens for wrapped token
        implementations.


        - `PermanentDelegate`: An immutable delegate authority that cannot be
        changed once set. Has unlimited control over all token accounts
        including transfer and burn operations.


        Supported permissions by chain:

        - **EVM (CoboERC20)**: ManagePermissions, ManageAccessAndControls,
        MintTokens, BurnTokens, RecoverTokens, UpgradeContract, PauseContract

        - **EVM (CoboERC20Wrapper)**: ManagePermissions,
        ManageAccessAndControls, MintTokens, WrapTokens, RecoverTokens,
        UpgradeContract, PauseContract

        - **Solana (SPL Token 2022)**: MintTokens, PauseContract,
        FreezeAccounts, UpdateMetadata, PermanentDelegate
      enum:
        - ManagePermissions
        - ManageAccessAndControls
        - MintTokens
        - BurnTokens
        - WrapTokens
        - RecoverTokens
        - UpgradeContract
        - PauseContract
        - FreezeAccounts
        - UpdateMetadata
        - PermanentDelegate
      example: MintTokens
    TokenizationOperationSourceType:
      type: string
      enum:
        - Org-Controlled
        - Web3
      example: Org-Controlled
      description: |
        The wallet source type. Possible values include:
        - `Org-Controlled`: MPC Wallets (Organization-Controlled Wallets).
        - `Web3`: Custodial Wallets (Web3 Wallets). 
    SolContractCallAccount:
      title: SOL Instruction Account
      type: object
      description: The information about the account involved in a Solana instruction.
      required:
        - pubkey
        - is_signer
        - is_writable
      properties:
        pubkey:
          type: string
          description: >
            The public key of the account. If the account is a signer of this
            transaction, this property must be the same as the value of the
            `source.address` property.
          example: E4MhQWiqCLER3fFZNf8LyQFpLWW3BRxtsR5eps3c3vNS
        is_signer:
          type: boolean
          description: |
            Whether the account is the signer of this transaction:
            - `true`: The account is a signer.
            - `false`: The account is not a signer.
          example: true
        is_writable:
          type: boolean
          description: |
            Whether the account can be modified by the instruction:
            - `true`: The account can be modified by the instruction.
            - `false`: The account cannot be modified by the instruction.
          example: true
  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.
    OAuth2:
      type: oauth2
      description: >-
        The [Org Access
        Token](https://www.cobo.com/developers/v2/apps/org-access-tokens). Use
        this authorization method only if you are developing Cobo Portal Apps
        for installation and use across different organizations.
      flows:
        authorizationCode:
          authorizationUrl: https://auth.cobo.com/authorize
          tokenUrl: https://auth.cobo.com/oauth/token
          scopes:
            address_book.read: Read address book
            api_key.read: Read API key information
            callback.read: Read callback message
            callback.resend: Resend callback message
            wallet.create: Create wallet
            wallet.read: Read wallet information
            wallet.update: Update wallet information
            wallet.delete: Delete wallet information
            wallet.create_address: Create wallet address
            wallet.manage_utxo: Manage UTXO
            mpc_project.create: Create MPC project
            mpc_project.read: Read MPC project information
            mpc_project.update: Update MPC project information
            mpc_vault.create: Create MPC Vault
            mpc_vault.read: Read MPC Vault information
            mpc_vault.update: Update MPC Vault information
            mpc_key_group.create: Create MPC key group
            mpc_key_group.read: Read MPC key group information
            mpc_key_group.update: Update MPC key group information
            mpc_key_group.delete: Delete MPC key group information
            transaction.read: Read transaction information
            transaction.withdraw: Make withdrawals
            transaction.estimate_fee: Estimate transaction fee
            transaction.contract_call: Initiate contract calls
            transaction.message_sign: Initiate message signings
            transaction.stake: Stake assets
            transaction.unstake: Unstake assets
            transaction.unstake_withdraw: Withdraw unstaked assets
            transaction.manage: Manage ongoing transactions
            transaction.update: Update transaction notes
            travel_rule.read: Read travel rule information
            travel_rule.edit: Edit travel rule information
            webhook.read: Read webhook URLs/events
            webhook.edit: Edit webhook URLs
            webhook.resend: Resend webhook events
            payment_orders_payin.create: Create pay-in order
            payment_orders_payin.read: Read pay-in order information
            payment_orders_payin.update: Update pay-in order
            payment_orders_refund.create: Create payment refund order
            payment_orders_refund.read: Read payment refund order information
            payment_settlement.create: Create payment settlement request
            payment_settlement.read: Read payment settlement request information
            payment_merchant.create: Create payment merchant
            payment_merchant.read: Read payment merchant information
            payment_merchant.update: Update payment merchant
            payment_forced_sweep.create: Create payment force sweep request
            payment_forced_sweep.read: Read payment force sweep request information
            compliance_funds.refund: Refund compliance funds request
            compliance_funds.isolate: Isolate compliance funds request
            compliance_funds.unfreeze: Unfreeze compliance funds request
            compliance_funds.read: Read compliance funds request information
            compliance_kyt_review.update: Update KYT review status
            compliance_kyt_decisions.update: Update KYT decision status
            compliance_kyt_status.read: Read KYT screening status
            compliance_kya_screenings.create: Create KYA address screening requests
            compliance_kya_screenings.read: Read KYA address screening results

````