protected override FeeParametersData Deserialize(JArray value, Type objectType)
        {
            if (value.IsNullOrEmpty() || value.Count != 2)
            {
                return(null);
            }
            var type = (ChainTypes.FeeParameters)Convert.ToInt32(value.First);

            switch (type)
            {
            case ChainTypes.FeeParameters.TransferOperation:
                return(TransferOperationFeeParametersData.Create(value.Last as JObject));

            case ChainTypes.FeeParameters.AccountCreateOperation:
                return(AccountCreateOperationFeeParametersData.Create(value.Last as JObject));

            case ChainTypes.FeeParameters.TournamentCreateOperation:
                return(TournamentCreateOperationFeeParametersData.Create(value.Last as JObject));

            case ChainTypes.FeeParameters.TournamentJoinOperation:
                return(TournamentJoinOperationFeeParametersData.Create(value.Last as JObject));

            case ChainTypes.FeeParameters.GameMoveOperation:
                return(GameMoveOperationFeeParametersData.Create(value.Last as JObject));

            case ChainTypes.FeeParameters.ProposalCreateOperation:
                return(ProposalCreateOperationFeeParametersData.Create(value.Last as JObject));

            case ChainTypes.FeeParameters.LimitOrderCreateOperation:
            case ChainTypes.FeeParameters.LimitOrderCancelOperation:
            case ChainTypes.FeeParameters.CallOrderUpdateOperation:
            case ChainTypes.FeeParameters.FillOrderOperation:
            case ChainTypes.FeeParameters.AccountUpdateOperation:
            case ChainTypes.FeeParameters.AccountWhitelistOperation:
            case ChainTypes.FeeParameters.AccountUpgradeOperation:
            case ChainTypes.FeeParameters.AccountTransferOperation:
            case ChainTypes.FeeParameters.AssetCreateOperation:
            case ChainTypes.FeeParameters.AssetUpdateOperation:
            case ChainTypes.FeeParameters.AssetUpdateBitassetOperation:
            case ChainTypes.FeeParameters.AssetUpdateFeedProducersOperation:
            case ChainTypes.FeeParameters.AssetIssueOperation:
            case ChainTypes.FeeParameters.AssetReserveOperation:
            case ChainTypes.FeeParameters.AssetFundFeePoolOperation:
            case ChainTypes.FeeParameters.AssetSettleOperation:
            case ChainTypes.FeeParameters.AssetGlobalSettleOperation:
            case ChainTypes.FeeParameters.AssetPublishFeedOperation:
            case ChainTypes.FeeParameters.WitnessCreateOperation:
            case ChainTypes.FeeParameters.WitnessUpdateOperation:
            case ChainTypes.FeeParameters.ProposalUpdateOperation:
            case ChainTypes.FeeParameters.ProposalDeleteOperation:
            case ChainTypes.FeeParameters.WithdrawPermissionCreateOperation:
            case ChainTypes.FeeParameters.WithdrawPermissionUpdateOperation:
            case ChainTypes.FeeParameters.WithdrawPermissionClaimOperation:
            case ChainTypes.FeeParameters.WithdrawPermissionDeleteOperation:
            case ChainTypes.FeeParameters.CommitteeMemberCreateOperation:
            case ChainTypes.FeeParameters.CommitteeMemberUpdateOperation:
            case ChainTypes.FeeParameters.CommitteeMemberUpdateGlobalParametersOperation:
            case ChainTypes.FeeParameters.VestingBalanceCreateOperation:
            case ChainTypes.FeeParameters.VestingBalanceWithdrawOperation:
            case ChainTypes.FeeParameters.WorkerCreateOperation:
            case ChainTypes.FeeParameters.CustomOperation:
            case ChainTypes.FeeParameters.AssertOperation:
            case ChainTypes.FeeParameters.BalanceClaimOperation:
            case ChainTypes.FeeParameters.OverrideTransferOperation:
            case ChainTypes.FeeParameters.TransferToBlindOperation:
            case ChainTypes.FeeParameters.BlindTransferOperation:
            case ChainTypes.FeeParameters.TransferFromBlindOperation:
            case ChainTypes.FeeParameters.AssetSettleCancelOperation:
            case ChainTypes.FeeParameters.AssetClaimFeesOperation:
            case ChainTypes.FeeParameters.FbaDistributeOperation:
            case ChainTypes.FeeParameters.AssetUpdateDividendOperation:
            case ChainTypes.FeeParameters.AssetDividendDistributionOperation:
                // skip
                return(null);

            default:
                Unity.Console.Error("Unexpected fee parameters type:", type);
                return(null);
            }
        }