class ShopifyAPI::Clients::Graphql::Client

def initialize(session:, base_path:, api_version: nil)

def initialize(session:, base_path:, api_version: nil)
  @http_client = T.let(HttpClient.new(session: session, base_path: base_path), HttpClient)
  @api_version = T.let(api_version || Context.api_version, String)
  if api_version
    if api_version == Context.api_version
      Context.logger.debug("Graphql client has a redundant API version override "\
        "to the default #{Context.api_version}")
    else
      Context.logger.debug("Graphql client overriding default API version "\
        "#{Context.api_version} with #{api_version}")
    end
  end
end

def query(query:, variables: nil, headers: nil, tries: 1)

def query(query:, variables: nil, headers: nil, tries: 1)
  body = { query: query, variables: variables }
  @http_client.request(
    HttpRequest.new(
      http_method: :post,
      path: "#{@api_version}/graphql.json",
      body: body,
      query: nil,
      extra_headers: headers,
      body_type: "application/json",
      tries: tries,
    ),
  )
end