JS wrapper response types

The Result interface is a generic interface that defines two properties:

  • completionKey: A String that represents a unique identifier for the result.

  • data: A generic type T that represents the actual data of the result. This interface is implemented by various classes in the io.bladewallet.bladesdk package, which represent the different types of responses that can be returned by the Blade API. The completionKey property is used to correlate the response with the original request, and the data property contains the actual data returned by the API.

interface Result<T>{
    var completionKey: String
    var data: T
}

This is a data class definition for BladeJSError with two properties: name and reason. In this case, BladeJSError has two properties: name and reason. The purpose of this class is to hold information about an error that occurred in the context of BladeJS, with the name property indicating the type of the error and the reason property providing more detailed information about what went wrong.

data class BladeJSError(
    var name: String,
    var reason: String
)   

The ContractFunctionParameter data class represents a parameter of a contract function. It has two properties:

  • type: A String representing the data type of the parameter.

  • value: A List of Strings representing the value(s) of the parameter.

data class ContractFunctionParameter (
    var type: String,
    var value: List<String>
)
data class Response (
    override var completionKey: String,
    override var data: Any,
    var error: BladeJSError?,
) : Result<Any>
data class InfoData(
    var apiKey: String,
    var dAppCode: String,
    var network: String,
    var visitorId: String,
    var sdkEnvironment: String,
    var sdkVersion: String,
    var nonce: Int
)
data class BalanceData(
    var hbars: Double,
    var tokens: List<BalanceDataToken>
)
data class BalanceDataToken(
    var balance: Double,
    var tokenId: String
)
data class AccountInfoData(
    var accountId: String,
    var evmAddress: String,
    var calculatedEvmAddress: String,
    var publicKey: String,
    var stakingInfo: StakingInfo
)
data class StakingInfo(
    val pendingReward: Long,
    val stakedNodeId: Int?,
    val stakePeriodStart: String?
)
data class NodesResponse(
    override var completionKey: String,
    override var data: NodesData
): Result<NodesData>
data class NodesData(
    var nodes: List<NodeInfo>,
)

data class NodeInfo(
    var description: String,
    var max_stake: Long,
    var min_stake: Long,
    var node_id: Int,
    var node_account_id: String,
    var stake: Long,
    var stake_not_rewarded: Long,
    var stake_rewarded: Long,
)
data class CreatedAccountData(
    var seedPhrase: String,
    var publicKey: String,
    var privateKey: String,
    var accountId: String?,
    var evmAddress: String,
    var transactionId: String?,
    var status: String,
    var queueNumber: Int?
)
data class TransactionReceiptData(
    var status: String,
    var contractId: String?,
    var topicSequenceNumber: String?,
    var totalSupply: String?,
    var serials: List<String>?
)
data class ContractQueryData(
    var gasUsed: Int,
    var values: List<ContractQueryRecord>
)
data class ContractQueryRecord(
    var type: String,
    var value: String
)
data class PrivateKeyData(
    var privateKey: String,
    var publicKey: String,
    var accounts: List<String>,
    var evmAddress: String
)
data class AccountPrivateData(
    var accounts: List<AccountPrivateRecord>
)
data class AccountPrivateRecord(
    var privateKey: String,
    var publicKey: String,
    var evmAddress: String,
    var address: String,
    var path: String,
    val keyType: CryptoKeyType
)
data class SignMessageData(
    var signedMessage: String
)
data class SignVerifyMessageData(
    var valid: Boolean
)
data class SplitSignatureData(
    var v: Int,
    var r: String,
    var s: String,
)
data class TransactionsHistoryData(
    var nextPage: String?,
    var transactions: List<TransactionHistoryDetail>
)
data class TransactionHistoryDetail(
    var fee: Double,
    var memo: String,
    var nftTransfers: List<TransactionHistoryNftTransfer>?,
    var time: String,
    var transactionId: String,
    var transfers: List<TransactionHistoryTransfer>,
    var type: String,
    var plainData: TransactionHistoryPlainData?,
    var consensusTimestamp: String
)
data class TransactionHistoryPlainData(
    var type: String,
    var token_id: String,
    var amount: Double,
    var senders: List<String>,
    var receivers: List<String>
)
data class TransactionHistoryTransfer(
    var account: String,
    var amount: Double,
    var is_approval: Boolean
)
data class TransactionHistoryNftTransfer(
    var is_approval: Boolean,
    var receiver_account_id: String,
    var sender_account_id: String,
    var serial_number: Int,
    var token_id: String
)
data class IntegrationUrlData(
    var url: String?,
)
data class SwapQuotesData(
    var quotes: List<ICryptoFlowQuote>
)
data class ICryptoFlowQuote(
    var service: ICryptoFlowQuoteService,
    var source: IAssetQuote,
    var target: IAssetQuote,
    var rate: Double?,
    var widgetUrl: String?,
    var paymentMethods: List<String>?
)
data class ICryptoFlowQuoteService(
    var id: String,
    var name: String,
    var logo: String,
    var description: String?
)
data class IAssetQuote(
    var asset: ICryptoFlowAsset,
    var amountExpected: Double,
    var totalFee: Double?,
)
data class ICryptoFlowAsset(
    var name: String,
    var code: String,
    var type: String,
    // crypto only
    var address: String?,
    var chainId: Int?,
    var decimals: Int?,
    var minAmount: Double?,
    var maxAmount: Double?,
    // fiat only
    var symbol: String?,
    // both
    var imageUrl: String?,
)
data class ResultData(
    var success: Boolean
)
data class CreateTokenData(
    var tokenId: String
)
data class RemoteConfig(
    var fpApiKey: String
)
data class CoinListResponse(
    override var completionKey: String,
    override var data: CoinListData
) : Result<CoinListData>
data class CoinListData(
    var coins: List<CoinItem>
)
data class CoinItem (
    var id: String,
    var symbol: String,
    var name: String,
    var platforms: List<CoinGeckoPlatform>
)
data class CoinGeckoPlatform (
    var name: String,
    var address: String
)
data class CoinInfoResponse(
    override var completionKey: String,
    override var data: CoinInfoData
) : Result<CoinInfoData>
data class CoinInfoData(
    var coin: CoinData,
    var priceUsd: Double,
    var price: Double?,
    var currency: String
)
data class CoinData(
    var id: String,
    var symbol: String,
    var name: String,
    var web_slug: String,
    var description: CoinDataDescription,
    var image: CoinDataImage,
    var market_data: CoinDataMarket,
    var platforms: List<CoinGeckoPlatform>
)
data class CoinDataDescription(
    val en: String
)
data class CoinDataImage(
    val thumb: String,
    val small: String,
    val large: String
)
data class CoinDataMarket(
    val currentPrice: Map<String, Double>
)
data class KeyRecord(
    val privateKey: String,
    val type: KeyType
)
data class NFTStorageConfig(
    val provider: NFTStorageProvider,
    val apiKey: String
)
data class TokenDropData(
    var status: String,
    var statusCode: Int,
    var timestamp: String,
    var executionStatus: String,
    var requestId: String,
    var accountId: String,
    var redirectUrl: String
)
abstract class ScheduleTransactionTransfer(
    var type: ScheduleTransferType,
    sender: String,
    receiver: String,
    value: Int,
    tokenId: String = "",
    serial: Int
)

data class ScheduleTransactionTransferHbar(
    var sender: String,
    var receiver: String,
    var value: Int,
) : ScheduleTransactionTransfer(ScheduleTransferType.HBAR, sender, receiver, value, "", 0)

data class ScheduleTransactionTransferToken(
    var sender: String,
    var receiver: String,
    var tokenId: String,
    var value: Int,
) : ScheduleTransactionTransfer(ScheduleTransferType.FT, sender, receiver, value, tokenId, 0)

data class ScheduleTransactionTransferNFT(
    var sender: String,
    var receiver: String,
    var tokenId: String,
    var serial: Int
) : ScheduleTransactionTransfer(ScheduleTransferType.NFT, sender, receiver, 0, tokenId, serial)
data class CreateScheduleResponse(
    override var completionKey: String,
    override var data: CreateScheduleData
) : Result<CreateScheduleData>
data class CreateScheduleData(
    var scheduleId: String
)
enum class NFTStorageProvider(val value: String) {
    nftStorage("nftStorage");

    companion object {
        fun fromValue(value: String): NFTStorageProvider? {
            return NFTStorageProvider.values().find { it.value == value }
        }
    }
}
enum class KeyType(val value: String) {
    admin("admin"),
    kyc("kyc"),
    freeze("freeze"),
    wipe("wipe"),
    pause("pause"),
    feeSchedule("feeSchedule");

    companion object {
        fun fromValue(value: String): KeyType? {
            return KeyType.values().find { it.value == value }
        }
    }
}
enum class BladeEnv(val value: String) {
    Prod("Prod"),
    CI("CI")
}
enum class CryptoFlowServiceStrategy(val value: String) {
    BUY("Buy"),
    SELL("Sell"),
    SWAP("Swap");

    companion object {
        fun fromValue(value: String): CryptoFlowServiceStrategy? {
            return values().find { it.value == value }
        }
    }
}
enum class CryptoKeyType(val value: String) {
    ECDSA_SECP256K1("ECDSA_SECP256K1"),
    ED25519("ED25519");

    companion object {
        fun fromValue(value: String): CryptoKeyType? {
            return CryptoKeyType.values().find { it.value == value }
        }
    }
}
enum class ScheduleTransactionType(val value: String) {
    TRANSFER("TRANSFER");
    // SUBMIT_MESSAGE("SUBMIT_MESSAGE"),
    // APPROVE_ALLOWANCE("APPROVE_ALLOWANCE"),
    // TOKEN_MINT("TOKEN_MINT"),
    // TOKEN_BURN("TOKEN_BURN");
}
enum class ScheduleTransferType(val value: String) {
    HBAR("HBAR"),
    FT("FT"),
    NFT("NFT")
}

Last updated