private static object GetFunctionInputFromEventParameter(IContractQueryParameterDto functionParameter, DecodedEvent decodedEvent)
        {
            if (functionParameter.EventParameterNumber < 1)
            {
                return(null);
            }

            return(decodedEvent.Event.FirstOrDefault(p => p.Parameter.Order == functionParameter.EventParameterNumber)?.Result);
        }
        private static object GetFunctionInputFromMetadata(IContractQueryParameterDto functionParameter, DecodedEvent decodedEvent)
        {
            if (string.IsNullOrEmpty(functionParameter.EventStateName))
            {
                return(null);
            }

            return(decodedEvent.State.ContainsKey(functionParameter.EventStateName) ?
                   decodedEvent.State[functionParameter.EventStateName] : null);
        }
        private object GetFunctionInputParameterValue(IContractQueryParameterDto functionParameter, DecodedEvent decodedEvent)
        {
            switch (functionParameter.Source)
            {
            case EventValueSource.Static:
                return(functionParameter.Value);

            case EventValueSource.EventAddress:
                return(decodedEvent.Log.Address);

            case EventValueSource.EventParameters:
                return(GetFunctionInputFromEventParameter(functionParameter, decodedEvent));

            case EventValueSource.EventState:
                return(GetFunctionInputFromMetadata(functionParameter, decodedEvent));

            default:
                return(null);
            }
        }