//
// Copyright 2025 Circle Internet Group, Inc. All rights reserved.
//
// SPDX-License-Identifier: Apache-2.0
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

#import <Foundation/Foundation.h>
#import <React/RCTBridgeModule.h>

@interface RCT_EXTERN_REMAP_MODULE(Wallets, RNWallets, NSObject)
RCT_EXTERN_METHOD(getMarketInfos: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(walletConnectGetSupportedChain: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(getCurrencies: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(getWalletsByChainIds: (NSArray *)chainIds
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(getWalletsByCaip2ChainIds: (NSArray *)caip2ChainIds
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(getWallets: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(getWalletLegacy: (NSInteger *)walletId
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(getWallet: (NSInteger *)walletId
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(getSolNftTokens: (NSInteger *)walletId
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(createWallet: (NSInteger *)currency
                  withTokenAddress: (NSString*)tokenAddress
                  withParent: (NSInteger *)parentWalletId
                  withName: (NSString*)name
                  withPinCode: (NSString*)pinCode
                  withExtras: (NSDictionary *)extras
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(createWalletWithPinSecret: (NSInteger *)currency
                  withTokenAddress: (NSString*)tokenAddress
                  withParent: (NSInteger *)parentWalletId
                  withName: (NSString*)name
                  byPinSecret: (NSDictionary *)byPinSecret
                  withExtras: (NSDictionary *)extras
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(renameWallet: (NSInteger *)walletId
                  withName: (NSString*)name
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(getWalletUsage: (NSInteger *)walletId
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(createTransactionWithSecureToken: (NSInteger *)fromWalletId
                  toAddress: (NSString*)addr
                  withAmount: (NSString*)amount
                  withFee: (NSString*)transactionFee
                  withDesc: (NSString*)description
                  extras: (NSDictionary *)extras
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(createTransactionSmsWithSecureToken: (NSString *)actionToken
                  smsCode: (NSString *)smsCode
                  fromWalletId: (NSInteger *)fromWalletId
                  toAddress: (NSString*)addr
                  withAmount: (NSString*)amount
                  withFee: (NSString*)transactionFee
                  withDesc: (NSString*)description
                  extras: (NSDictionary *)extras
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(createTransactionBioWithSecureToken: (NSString *)promptMessage
                  fromWalletId: (NSInteger *)fromWalletId
                  toAddress: (NSString*)addr
                  withAmount: (NSString*)amount
                  withFee: (NSString*)transactionFee
                  withDesc: (NSString*)description
                  extras: (NSDictionary *)extras
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(createTransactionWithPinCode: (NSInteger *)fromWalletId
                  toAddress: (NSString*)addr
                  withAmount: (NSString*)amount
                  withFee: (NSString*)transactionFee
                  withDesc: (NSString*)description
                  byPIN: (NSString*)pinCode
                  extras: (NSDictionary *)extras
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(createTransactionWithPinSecret: (NSInteger *)fromWalletId
                  toAddress: (NSString*)addr
                  withAmount: (NSString*)amount
                  withFee: (NSString*)transactionFee
                  withDesc: (NSString*)description
                  byPinSecret: (NSDictionary *)byPinSecret
                  extras: (NSDictionary *)extras
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(createTransactionSmsWithPinSecret: (NSString *)actionToken
                  smsCode: (NSString *)smsCode
                  fromWalletId: (NSInteger *)fromWalletId
                  toAddress: (NSString*)addr
                  withAmount: (NSString*)amount
                  withFee: (NSString*)transactionFee
                  withDesc: (NSString*)description
                  byPinSecret: (NSDictionary *)byPinSecret
                  extras: (NSDictionary *)extras
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(createTransactionBioWithPinSecret: (NSString *)promptMessage
                  fromWalletId: (NSInteger *)fromWalletId
                  toAddress: (NSString*)addr
                  withAmount: (NSString*)amount
                  withFee: (NSString*)transactionFee
                  withDesc: (NSString*)description
                  byPinSecret: (NSDictionary *)byPinSecret
                  extras: (NSDictionary *)extras
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(createTransactionSmsWithPinCode: (NSString *)actionToken
                  smsCode: (NSString *)smsCode
                  fromWalletId: (NSInteger *)fromWalletId
                  toAddress: (NSString*)addr
                  withAmount: (NSString*)amount
                  withFee: (NSString*)transactionFee
                  withDesc: (NSString*)description
                  byPIN: (NSString*)pinCode
                  extras: (NSDictionary *)extras
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(createTransactionBioWithPinCode: (NSString *)promptMessage
                  fromWalletId: (NSInteger *)fromWalletId
                  toAddress: (NSString*)addr
                  withAmount: (NSString*)amount
                  withFee: (NSString*)transactionFee
                  withDesc: (NSString*)description
                  byPIN: (NSString*)pinCode
                  extras: (NSDictionary *)extras
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(increaseTransactionFeeWithPinCode: (NSInteger *)fromWalletId
                  txid: (NSString*)txid
                  withFee: (NSString*)transactionFee
                  byPIN: (NSString*)pinCode
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(increaseTransactionFeeWithPinSecret: (NSInteger *)fromWalletId
                  txid: (NSString*)txid
                  withFee: (NSString*)transactionFee
                  byPinSecret: (NSDictionary *)byPinSecret
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(increaseTransactionFeeSmsWithPinSecret: (NSString *)actionToken
                  smsCode: (NSString *)smsCode
                  fromWalletId: (NSInteger *)fromWalletId
                  txid: (NSString*)txid
                  withFee: (NSString*)transactionFee
                  byPinSecret: (NSDictionary *)byPinSecret
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(increaseTransactionFeeBioWithPinSecret:  (NSString *)promptMessage
                  fromWalletId: (NSInteger *)fromWalletId
                  txid: (NSString*)txid
                  withFee: (NSString*)transactionFee
                  byPinSecret: (NSDictionary *)byPinSecret
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(increaseTransactionFeeSmsWithPinCode: (NSString *)actionToken
                  smsCode: (NSString *)smsCode
                  fromWalletId: (NSInteger *)fromWalletId
                  txid: (NSString*)txid
                  withFee: (NSString*)transactionFee
                  byPIN: (NSString*)pinCode
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(increaseTransactionFeeBioWithPinCode:  (NSString *)promptMessage
                  fromWalletId: (NSInteger *)fromWalletId
                  txid: (NSString*)txid
                  withFee: (NSString*)transactionFee
                  byPIN: (NSString*)pinCode
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(cancelTransactionWithPinCode: (NSInteger *)fromWalletId
                  txid: (NSString*)txid
                  withFee: (NSString*)transactionFee
                  byPIN: (NSString*)pinCode
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(cancelTransactionWithPinSecret: (NSInteger *)fromWalletId
                  txid: (NSString*)txid
                  withFee: (NSString*)transactionFee
                  byPinSecret: (NSDictionary *)byPinSecret
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(cancelTransactionSmsWithPinSecret: (NSString *)actionToken
                  smsCode: (NSString *)smsCode
                  fromWalletId: (NSInteger *)fromWalletId
                  txid: (NSString*)txid
                  withFee: (NSString*)transactionFee
                  byPinSecret: (NSDictionary *)byPinSecret
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(cancelTransactionBioWithPinSecret: (NSString *)promptMessage
                  fromWalletId: (NSInteger *)fromWalletId
                  txid: (NSString*)txid
                  withFee: (NSString*)transactionFee
                  byPinSecret: (NSDictionary *)byPinSecret
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(cancelTransactionSmsWithPinCode: (NSString *)actionToken
                  smsCode: (NSString *)smsCode
                  fromWalletId: (NSInteger *)fromWalletId
                  txid: (NSString*)txid
                  withFee: (NSString*)transactionFee
                  byPIN: (NSString*)pinCode
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(cancelTransactionBioWithPinCode: (NSString *)promptMessage
                  fromWalletId: (NSInteger *)fromWalletId
                  txid: (NSString*)txid
                  withFee: (NSString*)transactionFee
                  byPIN: (NSString*)pinCode
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(requestSecureToken: (NSString *)pinCode
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)


RCT_EXTERN_METHOD(requestSecureTokenWithPinSecret: (NSDictionary *)byPinSecret
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(requestSecureTokenSmsWithPinSecret:(NSString *)actionToken
                  smsCode: (NSString *)smsCode
                  byPinSecret: (NSDictionary *)byPinSecret
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(requestSecureTokenBioWithPinSecret: (NSString *)promptMessage
                  byPinSecret: (NSDictionary *)byPinSecret
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(requestSecureTokenSmsWithPinCode:(NSString *)actionToken
                  smsCode: (NSString *)smsCode
                  byPIN: (NSString*)pinCode
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(requestSecureTokenBioWithPinCode: (NSString *)promptMessage
                  byPIN: (NSString*)pinCode
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(clearSecureToken: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(getTransactionFee: (NSInteger *)currency
                  withTokenAddress: (NSString*)tokenAddress
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(getBalances: (NSArray *)address
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(getBalancesLegacy: (NSArray *)address
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(getFinancialProducts: (NSArray *)kinds
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(getFinancialHistoryByKind: (NSInteger *)kind
                  page: (NSString*)page
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(getFinancialHistoryByProduct: (NSString *)productUuid
                  page: (NSString*)page
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(getFinancialBonusList: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(getFinancialOrder: (NSString *)productUuid
                  orderId: (NSString*)orderId
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(getHistory: (NSInteger *)currency
                  withTokenAddress: (NSString*)tokenAddress
                  address: (NSString*)walletAddress
                  from: (NSInteger *)start
                  with: (NSInteger *)count
                  byFilter: (NSDictionary *)filter
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(getUserHistory: (NSInteger *)start
                  with: (NSInteger *)count
                  byFilter: (NSDictionary *)filter
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(getHistoryWithCrossChain: (NSInteger *)currency
                  withTokenAddress: (NSString*)tokenAddress
                  address: (NSString*)walletAddress
                  from: (NSInteger *)start
                  with: (NSInteger *)count
                  crossChain: (NSInteger *)crossChain
                  byFilter: (NSDictionary *)filter
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(callAbiFunction: (NSInteger *)walletId
                  function: (NSString*)name
                  with: (NSDictionary*)inputs
                  by: (NSString*)pinCode
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(callAbiFunctionWithPinSecret: (NSInteger *)walletId
                  function: (NSString*)name
                  with: (NSDictionary*)inputs
                  byPinSecret: (NSDictionary *)byPinSecret
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(callAbiFunctionSmsWithPinSecret: (NSString *)actionToken
                  smsCode: (NSString *)smsCode
                  walletId: (NSInteger *)walletId
                  function: (NSString*)name
                  with: (NSDictionary*)inputs
                  byPinSecret: (NSDictionary *)byPinSecret
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(callAbiFunctionBioWithPinSecret: (NSString *)promptMessage
                  walletId: (NSInteger *)walletId
                  function: (NSString*)name
                  with: (NSDictionary*)inputs
                  byPinSecret: (NSDictionary *)byPinSecret
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(callAbiFunctionSmsWithPinCode: (NSString *)actionToken
                  smsCode: (NSString *)smsCode
                  walletId: (NSInteger *)walletId
                  function: (NSString*)name
                  with: (NSDictionary*)inputs
                  byPIN: (NSString*)pinCode
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(callAbiFunctionBioWithPinCode: (NSString *)promptMessage
                  walletId: (NSInteger *)walletId
                  function: (NSString*)name
                  with: (NSDictionary*)inputs
                  byPIN: (NSString*)pinCode
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(callAbiFunctionRead: (NSInteger *)walletId
                  name: (NSString*)name
                  contractAddress: (NSString*)contractAddress
                  abiJson: (NSString*)abiJson
                  args: (NSArray *)args
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(callAbiFunctionTransaction: (NSInteger *)walletId
                  name: (NSString*)name
                  contractAddress: (NSString*)contractAddress
                  abiJson: (NSString*)abiJson
                  args: (NSArray *)args
                  transactionFee: (NSString*)transactionFee
                  byPinCode: (NSString*)pinCode
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(callAbiFunctionTransactionWithPinSecret: (NSInteger *)walletId
                  name: (NSString*)name
                  contractAddress: (NSString*)contractAddress
                  abiJson: (NSString*)abiJson
                  args: (NSArray *)args
                  transactionFee: (NSString*)transactionFee
                  byPinSecret: (NSDictionary *)byPinSecret
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(callAbiFunctionTransactionSmsWithPinSecret: (NSString *)actionToken
                  smsCode: (NSString *)smsCode
                  walletId: (NSInteger *)walletId
                  name: (NSString*)name
                  contractAddress: (NSString*)contractAddress
                  abiJson: (NSString*)abiJson
                  args: (NSArray *)args
                  transactionFee: (NSString*)transactionFee
                  byPinSecret: (NSDictionary *)byPinSecret
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(callAbiFunctionTransactionBioWithPinSecret: (NSString *)promptMessage
                  walletId: (NSInteger *)walletId
                  name: (NSString*)name
                  contractAddress: (NSString*)contractAddress
                  abiJson: (NSString*)abiJson
                  args: (NSArray *)args
                  transactionFee: (NSString*)transactionFee
                  byPinSecret: (NSDictionary *)byPinSecret
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(callAbiFunctionTransactionSmsWithPinCode: (NSString *)actionToken
                  smsCode: (NSString *)smsCode
                  walletId: (NSInteger *)walletId
                  name: (NSString*)name
                  contractAddress: (NSString*)contractAddress
                  abiJson: (NSString*)abiJson
                  args: (NSArray *)args
                  transactionFee: (NSString*)transactionFee
                  byPIN: (NSString*)pinCode
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)


RCT_EXTERN_METHOD(callAbiFunctionTransactionBioWithPinCode: (NSString *)promptMessage
                  walletId: (NSInteger *)walletId
                  name: (NSString*)name
                  contractAddress: (NSString*)contractAddress
                  abiJson: (NSString*)abiJson
                  args: (NSArray *)args
                  transactionFee: (NSString*)transactionFee
                  byPIN: (NSString*)pinCode
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(getTransactionInfo: (NSInteger *)currency
                  with: (NSString*)txid
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(validateEosAccount: (NSString*)accountName
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(getEosRamPrice: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(getEosResourceState: (NSString*)accountName
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(signRawTx: (NSInteger *)walletId
                rawTx: (NSString*)rawTx
                pinCode: (NSString*)pinCode
                resolver: (RCTPromiseResolveBlock)resolve
                rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(commonSignRawTx: (NSInteger *)walletId
                rawTx: (NSString*)rawTx
                pinCode: (NSString*)pinCode
                resolver: (RCTPromiseResolveBlock)resolve
                rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(signRawTxWithPinSecret: (NSInteger *)walletId
                rawTx: (NSString*)rawTx
                byPinSecret: (NSDictionary *)byPinSecret
                resolver: (RCTPromiseResolveBlock)resolve
                rejecter: (RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(commonSignRawTxWithPinSecret: (NSInteger *)walletId
                rawTx: (NSString*)rawTx
                byPinSecret: (NSDictionary *)byPinSecret
                resolver: (RCTPromiseResolveBlock)resolve
                rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(signRawTxSmsWithPinCode: (NSString *)actionToken
                smsCode: (NSString *)smsCode
                walletId: (NSInteger *)walletId
                rawTx: (NSString*)rawTx
                byPIN: (NSString*)pinCode
                resolver: (RCTPromiseResolveBlock)resolve
                rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(commonSignRawTxSmsWithPinCode: (NSString *)actionToken
                smsCode: (NSString *)smsCode
                walletId: (NSInteger *)walletId
                rawTx: (NSString*)rawTx
                byPIN: (NSString*)pinCode
                resolver: (RCTPromiseResolveBlock)resolve
                rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(signRawTxSmsWithPinSecret: (NSString *)actionToken
                smsCode: (NSString *)smsCode
                walletId: (NSInteger *)walletId
                rawTx: (NSString*)rawTx
                byPinSecret: (NSDictionary *)byPinSecret
                resolver: (RCTPromiseResolveBlock)resolve
                rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(commonSignRawTxSmsWithPinSecret: (NSString *)actionToken
                smsCode: (NSString *)smsCode
                walletId: (NSInteger *)walletId
                rawTx: (NSString*)rawTx
                byPinSecret: (NSDictionary *)byPinSecret
                resolver: (RCTPromiseResolveBlock)resolve
                rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(signRawTxBioWithPinCode: (NSString *)promptMessage
                walletId: (NSInteger *)walletId
                rawTx: (NSString*)rawTx
                byPIN: (NSString*)pinCode
                resolver: (RCTPromiseResolveBlock)resolve
                rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(commonSignRawTxBioWithPinCode: (NSString *)promptMessage
                walletId: (NSInteger *)walletId
                rawTx: (NSString*)rawTx
                byPIN: (NSString*)pinCode
                resolver: (RCTPromiseResolveBlock)resolve
                rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(signRawTxBioWithPinSecret: (NSString *)promptMessage
                walletId: (NSInteger *)walletId
                rawTx: (NSString*)rawTx
                byPinSecret: (NSDictionary *)byPinSecret
                resolver: (RCTPromiseResolveBlock)resolve
                rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(commonSignRawTxBioWithPinSecret: (NSString *)promptMessage
                walletId: (NSInteger *)walletId
                rawTx: (NSString*)rawTx
                byPinSecret: (NSDictionary *)byPinSecret
                resolver: (RCTPromiseResolveBlock)resolve
                rejecter: (RCTPromiseRejectBlock)reject)


RCT_EXTERN_METHOD(sendSignedTx: (NSInteger *)walletId
                signedTx: (NSString*)signedTx
                resolver: (RCTPromiseResolveBlock)resolve
                rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(estimateTransaction: (NSInteger *)currency
                tokenAddress: (NSString*)tokenAddress
                amount: (NSString*)amount
                transactionFee: (NSString*)transactionFee
                resolver: (RCTPromiseResolveBlock)resolve
                rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(estimateTransactionWithId: (NSInteger *)currency
                tokenAddress: (NSString*)tokenAddress
                amount: (NSString*)amount
                transactionFee: (NSString*)transactionFee
                walletId: (NSInteger *)walletId
                resolver: (RCTPromiseResolveBlock)resolve
                rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(estimateTransactionWithIdAddress: (NSInteger *)currency
                tokenAddress: (NSString*)tokenAddress
                amount: (NSString*)amount
                transactionFee: (NSString*)transactionFee
                walletId: (NSInteger *)walletId
                toAddress: (NSString*)toAddress
                resolver: (RCTPromiseResolveBlock)resolve
                rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(exportPrivateKey: (NSInteger *)walletId
                pinCode: (NSString*)pinCode
                resolver: (RCTPromiseResolveBlock)resolve
                rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(signMessage: (NSInteger *)walletId
                message: (NSString*)message
                pinCode: (NSString*)pinCode
                extras: (NSDictionary *)extras
                resolver: (RCTPromiseResolveBlock)resolve
                rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(signMessageWithPinSecret: (NSInteger *)walletId
                message: (NSString*)message
                byPinSecret: (NSDictionary *)byPinSecret
                extras: (NSDictionary *)extras
                resolver: (RCTPromiseResolveBlock)resolve
                rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(signMessageSmsWithPinSecret: (NSString *)actionToken
                smsCode: (NSString *)smsCode
                walletId: (NSInteger *)walletId
                message: (NSString*)message
                byPinSecret: (NSDictionary *)byPinSecret
                extras: (NSDictionary *)extras
                resolver: (RCTPromiseResolveBlock)resolve
                rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(signMessageBioWithPinSecret: (NSString *)promptMessage
                walletId: (NSInteger *)walletId
                message: (NSString*)message
                byPinSecret: (NSDictionary *)byPinSecret
                extras: (NSDictionary *)extras
                resolver: (RCTPromiseResolveBlock)resolve
                rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(signMessageSmsWithPinCode: (NSString *)actionToken
                smsCode: (NSString *)smsCode
                walletId: (NSInteger *)walletId
                message: (NSString*)message
                byPIN: (NSString*)pinCode
                extras: (NSDictionary *)extras
                resolver: (RCTPromiseResolveBlock)resolve
                rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(signMessageBioWithPinCode: (NSString *)promptMessage
                walletId: (NSInteger *)walletId
                message: (NSString*)message
                byPIN: (NSString*)pinCode
                extras: (NSDictionary *)extras
                resolver: (RCTPromiseResolveBlock)resolve
                rejecter: (RCTPromiseRejectBlock)reject)


RCT_EXTERN_METHOD(getCurrencyPrices: (NSArray *)wallets
                exchangeCurrencies: (NSArray *)exchangeCurrencies
                approximateRates: (NSDictionary *)approximateRates
                resolver: (RCTPromiseResolveBlock)resolve
                rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(queryCoinType: (NSString *)address
                resolver: (RCTPromiseResolveBlock)resolve
                rejecter: (RCTPromiseRejectBlock)reject)


RCT_EXTERN_METHOD(walletConnectSignTypedData: (NSInteger *)walletId
                typedData: (NSString*)typedData
                pinCode: (NSString*)pinCode
                resolver: (RCTPromiseResolveBlock)resolve
                rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(walletConnectSignTypedDataWithPinSecret: (NSInteger *)walletId
                typedData: (NSString*)typedData
                byPinSecret: (NSDictionary *)byPinSecret
                resolver: (RCTPromiseResolveBlock)resolve
                rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(walletConnectSignTypedDataSmsWithPinSecret: (NSString *)actionToken
                smsCode: (NSString *)smsCode
                walletId: (NSInteger *)walletId
                typedData: (NSString*)typedData
                byPinSecret: (NSDictionary *)byPinSecret
                resolver: (RCTPromiseResolveBlock)resolve
                rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(walletConnectSignTypedDataBioWithPinSecret: (NSString *)promptMessage
                walletId: (NSInteger *)walletId
                typedData: (NSString*)typedData
                byPinSecret: (NSDictionary *)byPinSecret
                resolver: (RCTPromiseResolveBlock)resolve
                rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(walletConnectSignTypedDataSmsWithPinCode: (NSString *)actionToken
                smsCode: (NSString *)smsCode
                walletId: (NSInteger *)walletId
                typedData: (NSString*)typedData
                byPIN: (NSString*)pinCode
                resolver: (RCTPromiseResolveBlock)resolve
                rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(walletConnectSignTypedDataBioWithPinCode: (NSString *)promptMessage
                walletId: (NSInteger *)walletId
                typedData: (NSString*)typedData
                byPIN: (NSString*)pinCode
                resolver: (RCTPromiseResolveBlock)resolve
                rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(walletConnectSignTransaction: (NSInteger *)walletId
                signParams: (NSString*)signParams
                pinCode: (NSString*)pinCode
                resolver: (RCTPromiseResolveBlock)resolve
                rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(walletConnectSignTransactionWithPinSecret: (NSInteger *)walletId
                signParams: (NSString*)signParams
                byPinSecret: (NSDictionary *)byPinSecret
                resolver: (RCTPromiseResolveBlock)resolve
                rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(walletConnectSignTransactionSmsWithPinSecret: (NSString *)actionToken
                smsCode: (NSString *)smsCode
                walletId: (NSInteger *)walletId
                signParams: (NSString*)signParams
                byPinSecret: (NSDictionary *)byPinSecret
                resolver: (RCTPromiseResolveBlock)resolve
                rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(walletConnectSignTransactionBioWithPinSecret: (NSString *)promptMessage
                walletId: (NSInteger *)walletId
                signParams: (NSString*)signParams
                byPinSecret: (NSDictionary *)byPinSecret
                resolver: (RCTPromiseResolveBlock)resolve
                rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(walletConnectSignTransactionSmsWithPinCode: (NSString *)actionToken
                smsCode: (NSString *)smsCode
                walletId: (NSInteger *)walletId
                signParams: (NSString*)signParams
                byPIN: (NSString*)pinCode
                resolver: (RCTPromiseResolveBlock)resolve
                rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(walletConnectSignTransactionBioWithPinCode: (NSString *)promptMessage
                walletId: (NSInteger *)walletId
                signParams: (NSString*)signParams
                byPIN: (NSString*)pinCode
                resolver: (RCTPromiseResolveBlock)resolve
                rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(walletConnectSignMessage: (NSInteger *)walletId
                message: (NSString*)message
                pinCode: (NSString*)pinCode
                extras: (NSDictionary *)extras
                resolver: (RCTPromiseResolveBlock)resolve
                rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(walletConnectSignMessageWithPinSecret: (NSInteger *)walletId
                message: (NSString*)message
                byPinSecret: (NSDictionary *)byPinSecret
                extras: (NSDictionary *)extras
                resolver: (RCTPromiseResolveBlock)resolve
                rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(walletConnectSignMessageSmsWithPinSecret: (NSString *)actionToken
                smsCode: (NSString *)smsCode
                walletId: (NSInteger *)walletId
                message: (NSString*)message
                byPinSecret: (NSDictionary *)byPinSecret
                extras: (NSDictionary *)extras
                resolver: (RCTPromiseResolveBlock)resolve
                rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(walletConnectSignMessageBioWithPinSecret: (NSString *)promptMessage
                walletId: (NSInteger *)walletId
                message: (NSString*)message
                byPinSecret: (NSDictionary *)byPinSecret
                extras: (NSDictionary *)extras
                resolver: (RCTPromiseResolveBlock)resolve
                rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(walletConnectSignMessageSmsWithPinCode: (NSString *)actionToken
                smsCode: (NSString *)smsCode
                walletId: (NSInteger *)walletId
                message: (NSString*)message
                byPIN: (NSString*)pinCode
                extras: (NSDictionary *)extras
                resolver: (RCTPromiseResolveBlock)resolve
                rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(walletConnectSignMessageBioWithPinCode: (NSString *)promptMessage
                walletId: (NSInteger *)walletId
                message: (NSString*)message
                byPIN: (NSString*)pinCode
                extras: (NSDictionary *)extras
                resolver: (RCTPromiseResolveBlock)resolve
                rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(walletConnectSendSignedTransaction: (NSInteger *)walletId
                signedTx: (NSString*)signedTx
                resolver: (RCTPromiseResolveBlock)resolve
                rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(getWalletConnectSignedTx: (NSInteger *)walletId
                  accessId: (NSString*)accessId
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(getWalletConnectUnsignedData: (NSInteger *)walletId
                  accessId: (NSString*)accessId
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(getWalletConnectApiHistory: (NSInteger *)walletId
                from: (NSInteger *)start
                with: (NSInteger *)count
                byFilter: (NSDictionary *)filter
                resolver: (RCTPromiseResolveBlock)resolve
                rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(walletConnectSync: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(getNonce: (NSInteger *)walletId
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(registerTokenIds: (NSInteger *)walletId
                  tokenIds: (NSArray *)tokenIds
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(cancelWalletConnectTransactionWithPinCode: (NSInteger *)walletId
                  accessId: (NSString*)accessId
                  withFee: (NSString*)transactionFee
                  byPIN: (NSString*)pinCode
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(cancelWalletConnectTransactionWithPinSecret: (NSInteger *)walletId
                  accessId: (NSString*)accessId
                  withFee: (NSString*)transactionFee
                  byPinSecret: (NSDictionary *)byPinSecret
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(cancelWalletConnectTransactionSmsWithPinSecret: (NSString *)actionToken
                  smsCode: (NSString *)smsCode
                  walletId: (NSInteger *)walletId
                  accessId: (NSString*)accessId
                  withFee: (NSString*)transactionFee
                  byPinSecret: (NSDictionary *)byPinSecret
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(cancelWalletConnectTransactionBioWithPinSecret: (NSString *)promptMessage
                  walletId: (NSInteger *)walletId
                  accessId: (NSString*)accessId
                  withFee: (NSString*)transactionFee
                  byPinSecret: (NSDictionary *)byPinSecret
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(cancelWalletConnectTransactionSmsWithPinCode: (NSString *)actionToken
                  smsCode: (NSString *)smsCode
                  walletId: (NSInteger *)walletId
                  accessId: (NSString*)accessId
                  withFee: (NSString*)transactionFee
                  byPIN: (NSString*)pinCode
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(cancelWalletConnectTransactionBioWithPinCode: (NSString *)promptMessage
                  walletId: (NSInteger *)walletId
                  accessId: (NSString*)accessId
                  withFee: (NSString*)transactionFee
                  byPIN: (NSString*)pinCode
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(updateDeviceInfoWithType: (NSInteger *)type
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(updateDeviceInfo: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(getTransactionSmsCode: (NSInteger *)duration
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(getLoginSmsCode: (NSInteger *)duration
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(getSmsCode: (NSInteger *)type
                  duration: (NSInteger*)duration
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(registerPubkey: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(getBiometricsType: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(isBioKeyExist: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(getSignedActionToken: (NSString *)promptMessage
                resolver: (RCTPromiseResolveBlock)resolve
                rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(getActionToken: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(getSignMessageActionToken: (NSString *)message
                resolver: (RCTPromiseResolveBlock)resolve
                rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(addContractCurrencyWithPinSecret: (NSInteger *)currency
                  contractAddress: (NSString*)contractAddress
                  byPinSecret: (NSDictionary *)byPinSecret
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(addContractCurrenciesWithPinSecret: (NSArray *)currency
                  contractAddress: (NSArray *)contractAddress
                  byPinSecret: (NSDictionary *)byPinSecret
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(addContractCurrency: (NSInteger *)currency
                  contractAddress: (NSString*)contractAddress
                  byPIN: (NSString*)pinCode
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(addContractCurrencies: (NSArray *)currency
                  contractAddress: (NSArray *)contractAddress
                  byPIN: (NSString*)pinCode
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(getMultipleTokenUri: (NSInteger *)currency
                  tokenAddresses: (NSArray *)tokenAddress
                  tokenIds: (NSArray *)tokenAddress
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(getAddressesTags: (NSInteger *)currency
                  addresses: (NSArray *)addresses
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(getCurrencyTraits: (NSInteger *)currency
                  tokenAddress: (NSString*)tokenAddress
                  tokenVersion: (NSInteger*)tokenVersion
                  walletAddress: (NSString*)walletAddress
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(getEstimateGas: (NSInteger *)walletId
                  content: (NSString*)tokenAddress
                  resolver: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(getSameCurrencyWalletLimit: (RCTPromiseResolveBlock)resolve
                  rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(setSolTokenAccountTransaction: (NSInteger *)walletId
                pinCode: (NSString*)pinCode
                resolver: (RCTPromiseResolveBlock)resolve
                rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(setSolTokenAccountTransactionWithPinSecret: (NSInteger *)walletId
                byPinSecret: (NSDictionary *)byPinSecret
                resolver: (RCTPromiseResolveBlock)resolve
                rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(setSolTokenAccountTransactionSms: (NSString *)actionToken
                smsCode: (NSString *)smsCode
                walletId: (NSInteger *)walletId
                byPIN: (NSString*)pinCode
                resolver: (RCTPromiseResolveBlock)resolve
                rejecter: (RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(setSolTokenAccountTransactionSmsWithPinSecret: (NSString *)actionToken
                smsCode: (NSString *)smsCode
                walletId: (NSInteger *)walletId
                byPinSecret: (NSDictionary *)byPinSecret
                resolver: (RCTPromiseResolveBlock)resolve
                rejecter: (RCTPromiseRejectBlock)reject)


RCT_EXTERN_METHOD(setSolTokenAccountTransactionBio: (NSString *)promptMessage
                walletId: (NSInteger *)walletId
                byPIN: (NSString*)pinCode
                resolver: (RCTPromiseResolveBlock)resolve
                rejecter: (RCTPromiseRejectBlock)reject)


RCT_EXTERN_METHOD(setSolTokenAccountTransactionBioWithPinSecret: (NSString *)promptMessage
                walletId: (NSInteger *)walletId
                byPinSecret: (NSDictionary *)byPinSecret
                resolver: (RCTPromiseResolveBlock)resolve
                rejecter: (RCTPromiseRejectBlock)reject)
@end
