// Code generated by github.com/Khan/genqlient, DO NOT EDIT.

package query

import (
	"context"

	"github.com/Khan/genqlient/graphql"
)

type BooleanInput struct {
	Value bool `json:"value"`
}

// GetValue returns BooleanInput.Value, and is useful for accessing the field via an interface.
func (v *BooleanInput) GetValue() bool { return v.Value }

// CreateExtensionCellOutputCreateExtensionCellOutput includes the requested fields of the GraphQL type CellOutput.
type CreateExtensionCellOutputCreateExtensionCellOutput struct {
	Id           string `json:"id"`
	HtmlUrl      string `json:"htmlUrl"`
	ExitCode     int    `json:"exitCode"`
	IsSlackReady bool   `json:"isSlackReady"`
}

// GetId returns CreateExtensionCellOutputCreateExtensionCellOutput.Id, and is useful for accessing the field via an interface.
func (v *CreateExtensionCellOutputCreateExtensionCellOutput) GetId() string { return v.Id }

// GetHtmlUrl returns CreateExtensionCellOutputCreateExtensionCellOutput.HtmlUrl, and is useful for accessing the field via an interface.
func (v *CreateExtensionCellOutputCreateExtensionCellOutput) GetHtmlUrl() string { return v.HtmlUrl }

// GetExitCode returns CreateExtensionCellOutputCreateExtensionCellOutput.ExitCode, and is useful for accessing the field via an interface.
func (v *CreateExtensionCellOutputCreateExtensionCellOutput) GetExitCode() int { return v.ExitCode }

// GetIsSlackReady returns CreateExtensionCellOutputCreateExtensionCellOutput.IsSlackReady, and is useful for accessing the field via an interface.
func (v *CreateExtensionCellOutputCreateExtensionCellOutput) GetIsSlackReady() bool {
	return v.IsSlackReady
}

// CreateExtensionCellOutputResponse is returned by CreateExtensionCellOutput on success.
type CreateExtensionCellOutputResponse struct {
	CreateExtensionCellOutput CreateExtensionCellOutputCreateExtensionCellOutput `json:"createExtensionCellOutput"`
}

// GetCreateExtensionCellOutput returns CreateExtensionCellOutputResponse.CreateExtensionCellOutput, and is useful for accessing the field via an interface.
func (v *CreateExtensionCellOutputResponse) GetCreateExtensionCellOutput() CreateExtensionCellOutputCreateExtensionCellOutput {
	return v.CreateExtensionCellOutput
}

type Int64Input struct {
	Value string `json:"value"`
}

// GetValue returns Int64Input.Value, and is useful for accessing the field via an interface.
func (v *Int64Input) GetValue() string { return v.Value }

type ReporterCellExecutionSummaryInput struct {
	ExecutionOrder UInt32                              `json:"executionOrder"`
	Success        BooleanInput                        `json:"success"`
	Timing         ReporterExecutionSummaryTimingInput `json:"timing"`
}

// GetExecutionOrder returns ReporterCellExecutionSummaryInput.ExecutionOrder, and is useful for accessing the field via an interface.
func (v *ReporterCellExecutionSummaryInput) GetExecutionOrder() UInt32 { return v.ExecutionOrder }

// GetSuccess returns ReporterCellExecutionSummaryInput.Success, and is useful for accessing the field via an interface.
func (v *ReporterCellExecutionSummaryInput) GetSuccess() BooleanInput { return v.Success }

// GetTiming returns ReporterCellExecutionSummaryInput.Timing, and is useful for accessing the field via an interface.
func (v *ReporterCellExecutionSummaryInput) GetTiming() ReporterExecutionSummaryTimingInput {
	return v.Timing
}

type ReporterCellInput struct {
	Kind             int                               `json:"kind"`
	Value            string                            `json:"value"`
	LanguageId       string                            `json:"languageId"`
	Metadata         ReporterCellMetadataInput         `json:"metadata"`
	TextRange        ReporterTextRangeInput            `json:"textRange"`
	Outputs          []ReporterCellOutputInput         `json:"outputs"`
	ExecutionSummary ReporterCellExecutionSummaryInput `json:"executionSummary"`
}

// GetKind returns ReporterCellInput.Kind, and is useful for accessing the field via an interface.
func (v *ReporterCellInput) GetKind() int { return v.Kind }

// GetValue returns ReporterCellInput.Value, and is useful for accessing the field via an interface.
func (v *ReporterCellInput) GetValue() string { return v.Value }

// GetLanguageId returns ReporterCellInput.LanguageId, and is useful for accessing the field via an interface.
func (v *ReporterCellInput) GetLanguageId() string { return v.LanguageId }

// GetMetadata returns ReporterCellInput.Metadata, and is useful for accessing the field via an interface.
func (v *ReporterCellInput) GetMetadata() ReporterCellMetadataInput { return v.Metadata }

// GetTextRange returns ReporterCellInput.TextRange, and is useful for accessing the field via an interface.
func (v *ReporterCellInput) GetTextRange() ReporterTextRangeInput { return v.TextRange }

// GetOutputs returns ReporterCellInput.Outputs, and is useful for accessing the field via an interface.
func (v *ReporterCellInput) GetOutputs() []ReporterCellOutputInput { return v.Outputs }

// GetExecutionSummary returns ReporterCellInput.ExecutionSummary, and is useful for accessing the field via an interface.
func (v *ReporterCellInput) GetExecutionSummary() ReporterCellExecutionSummaryInput {
	return v.ExecutionSummary
}

type ReporterCellMetadataInput struct {
	Id       string `json:"id"`
	Name     string `json:"name"`
	Category string `json:"category"`
	MimeType string `json:"mimeType"`
}

// GetId returns ReporterCellMetadataInput.Id, and is useful for accessing the field via an interface.
func (v *ReporterCellMetadataInput) GetId() string { return v.Id }

// GetName returns ReporterCellMetadataInput.Name, and is useful for accessing the field via an interface.
func (v *ReporterCellMetadataInput) GetName() string { return v.Name }

// GetCategory returns ReporterCellMetadataInput.Category, and is useful for accessing the field via an interface.
func (v *ReporterCellMetadataInput) GetCategory() string { return v.Category }

// GetMimeType returns ReporterCellMetadataInput.MimeType, and is useful for accessing the field via an interface.
func (v *ReporterCellMetadataInput) GetMimeType() string { return v.MimeType }

type ReporterCellOutputInput struct {
	Items       []ReporterCellOutputItemInput      `json:"items"`
	Metadata    string                             `json:"metadata"`
	ProcessInfo ReporterCellOutputProcessInfoInput `json:"processInfo"`
}

// GetItems returns ReporterCellOutputInput.Items, and is useful for accessing the field via an interface.
func (v *ReporterCellOutputInput) GetItems() []ReporterCellOutputItemInput { return v.Items }

// GetMetadata returns ReporterCellOutputInput.Metadata, and is useful for accessing the field via an interface.
func (v *ReporterCellOutputInput) GetMetadata() string { return v.Metadata }

// GetProcessInfo returns ReporterCellOutputInput.ProcessInfo, and is useful for accessing the field via an interface.
func (v *ReporterCellOutputInput) GetProcessInfo() ReporterCellOutputProcessInfoInput {
	return v.ProcessInfo
}

type ReporterCellOutputItemInput struct {
	Data string `json:"data"`
	Type string `json:"type"`
	Mime string `json:"mime"`
}

// GetData returns ReporterCellOutputItemInput.Data, and is useful for accessing the field via an interface.
func (v *ReporterCellOutputItemInput) GetData() string { return v.Data }

// GetType returns ReporterCellOutputItemInput.Type, and is useful for accessing the field via an interface.
func (v *ReporterCellOutputItemInput) GetType() string { return v.Type }

// GetMime returns ReporterCellOutputItemInput.Mime, and is useful for accessing the field via an interface.
func (v *ReporterCellOutputItemInput) GetMime() string { return v.Mime }

type ReporterCellOutputProcessInfoInput struct {
	ExitReason ReporterProcessInfoExitReasonInput `json:"exitReason"`
	Pid        Int64Input                         `json:"pid"`
}

// GetExitReason returns ReporterCellOutputProcessInfoInput.ExitReason, and is useful for accessing the field via an interface.
func (v *ReporterCellOutputProcessInfoInput) GetExitReason() ReporterProcessInfoExitReasonInput {
	return v.ExitReason
}

// GetPid returns ReporterCellOutputProcessInfoInput.Pid, and is useful for accessing the field via an interface.
func (v *ReporterCellOutputProcessInfoInput) GetPid() Int64Input { return v.Pid }

type ReporterDeviceInput struct {
	MacAddress     string `json:"macAddress"`
	Hostname       string `json:"hostname"`
	Platform       string `json:"platform"`
	Release        string `json:"release"`
	Arch           string `json:"arch"`
	Vendor         string `json:"vendor"`
	Shell          string `json:"shell"`
	VsAppHost      string `json:"vsAppHost"`
	VsAppName      string `json:"vsAppName"`
	VsAppSessionId string `json:"vsAppSessionId"`
	VsMachineId    string `json:"vsMachineId"`
	VsMetadata     string `json:"vsMetadata"`
}

// GetMacAddress returns ReporterDeviceInput.MacAddress, and is useful for accessing the field via an interface.
func (v *ReporterDeviceInput) GetMacAddress() string { return v.MacAddress }

// GetHostname returns ReporterDeviceInput.Hostname, and is useful for accessing the field via an interface.
func (v *ReporterDeviceInput) GetHostname() string { return v.Hostname }

// GetPlatform returns ReporterDeviceInput.Platform, and is useful for accessing the field via an interface.
func (v *ReporterDeviceInput) GetPlatform() string { return v.Platform }

// GetRelease returns ReporterDeviceInput.Release, and is useful for accessing the field via an interface.
func (v *ReporterDeviceInput) GetRelease() string { return v.Release }

// GetArch returns ReporterDeviceInput.Arch, and is useful for accessing the field via an interface.
func (v *ReporterDeviceInput) GetArch() string { return v.Arch }

// GetVendor returns ReporterDeviceInput.Vendor, and is useful for accessing the field via an interface.
func (v *ReporterDeviceInput) GetVendor() string { return v.Vendor }

// GetShell returns ReporterDeviceInput.Shell, and is useful for accessing the field via an interface.
func (v *ReporterDeviceInput) GetShell() string { return v.Shell }

// GetVsAppHost returns ReporterDeviceInput.VsAppHost, and is useful for accessing the field via an interface.
func (v *ReporterDeviceInput) GetVsAppHost() string { return v.VsAppHost }

// GetVsAppName returns ReporterDeviceInput.VsAppName, and is useful for accessing the field via an interface.
func (v *ReporterDeviceInput) GetVsAppName() string { return v.VsAppName }

// GetVsAppSessionId returns ReporterDeviceInput.VsAppSessionId, and is useful for accessing the field via an interface.
func (v *ReporterDeviceInput) GetVsAppSessionId() string { return v.VsAppSessionId }

// GetVsMachineId returns ReporterDeviceInput.VsMachineId, and is useful for accessing the field via an interface.
func (v *ReporterDeviceInput) GetVsMachineId() string { return v.VsMachineId }

// GetVsMetadata returns ReporterDeviceInput.VsMetadata, and is useful for accessing the field via an interface.
func (v *ReporterDeviceInput) GetVsMetadata() string { return v.VsMetadata }

type ReporterExecutionSummaryTimingInput struct {
	StartTime Int64Input `json:"startTime"`
	EndTime   Int64Input `json:"endTime"`
}

// GetStartTime returns ReporterExecutionSummaryTimingInput.StartTime, and is useful for accessing the field via an interface.
func (v *ReporterExecutionSummaryTimingInput) GetStartTime() Int64Input { return v.StartTime }

// GetEndTime returns ReporterExecutionSummaryTimingInput.EndTime, and is useful for accessing the field via an interface.
func (v *ReporterExecutionSummaryTimingInput) GetEndTime() Int64Input { return v.EndTime }

type ReporterExtensionInput struct {
	AutoSave bool                 `json:"autoSave"`
	Git      ReporterGitInput     `json:"git"`
	File     ReporterFileInput    `json:"file"`
	Session  ReporterSessionInput `json:"session"`
	Device   ReporterDeviceInput  `json:"device"`
}

// GetAutoSave returns ReporterExtensionInput.AutoSave, and is useful for accessing the field via an interface.
func (v *ReporterExtensionInput) GetAutoSave() bool { return v.AutoSave }

// GetGit returns ReporterExtensionInput.Git, and is useful for accessing the field via an interface.
func (v *ReporterExtensionInput) GetGit() ReporterGitInput { return v.Git }

// GetFile returns ReporterExtensionInput.File, and is useful for accessing the field via an interface.
func (v *ReporterExtensionInput) GetFile() ReporterFileInput { return v.File }

// GetSession returns ReporterExtensionInput.Session, and is useful for accessing the field via an interface.
func (v *ReporterExtensionInput) GetSession() ReporterSessionInput { return v.Session }

// GetDevice returns ReporterExtensionInput.Device, and is useful for accessing the field via an interface.
func (v *ReporterExtensionInput) GetDevice() ReporterDeviceInput { return v.Device }

type ReporterFileInput struct {
	Path    string `json:"path"`
	Content string `json:"content"`
}

// GetPath returns ReporterFileInput.Path, and is useful for accessing the field via an interface.
func (v *ReporterFileInput) GetPath() string { return v.Path }

// GetContent returns ReporterFileInput.Content, and is useful for accessing the field via an interface.
func (v *ReporterFileInput) GetContent() string { return v.Content }

type ReporterFrontmatterInput struct {
	Shell        string                        `json:"shell"`
	Cwd          string                        `json:"cwd"`
	SkipPrompts  bool                          `json:"skipPrompts"`
	Runme        ReporterFrontmatterRunmeInput `json:"runme"`
	Category     string                        `json:"category"`
	TerminalRows string                        `json:"terminalRows"`
}

// GetShell returns ReporterFrontmatterInput.Shell, and is useful for accessing the field via an interface.
func (v *ReporterFrontmatterInput) GetShell() string { return v.Shell }

// GetCwd returns ReporterFrontmatterInput.Cwd, and is useful for accessing the field via an interface.
func (v *ReporterFrontmatterInput) GetCwd() string { return v.Cwd }

// GetSkipPrompts returns ReporterFrontmatterInput.SkipPrompts, and is useful for accessing the field via an interface.
func (v *ReporterFrontmatterInput) GetSkipPrompts() bool { return v.SkipPrompts }

// GetRunme returns ReporterFrontmatterInput.Runme, and is useful for accessing the field via an interface.
func (v *ReporterFrontmatterInput) GetRunme() ReporterFrontmatterRunmeInput { return v.Runme }

// GetCategory returns ReporterFrontmatterInput.Category, and is useful for accessing the field via an interface.
func (v *ReporterFrontmatterInput) GetCategory() string { return v.Category }

// GetTerminalRows returns ReporterFrontmatterInput.TerminalRows, and is useful for accessing the field via an interface.
func (v *ReporterFrontmatterInput) GetTerminalRows() string { return v.TerminalRows }

type ReporterFrontmatterRunmeInput struct {
	Id      string                    `json:"id"`
	Version string                    `json:"version"`
	Session ReporterRunmeSessionInput `json:"session"`
}

// GetId returns ReporterFrontmatterRunmeInput.Id, and is useful for accessing the field via an interface.
func (v *ReporterFrontmatterRunmeInput) GetId() string { return v.Id }

// GetVersion returns ReporterFrontmatterRunmeInput.Version, and is useful for accessing the field via an interface.
func (v *ReporterFrontmatterRunmeInput) GetVersion() string { return v.Version }

// GetSession returns ReporterFrontmatterRunmeInput.Session, and is useful for accessing the field via an interface.
func (v *ReporterFrontmatterRunmeInput) GetSession() ReporterRunmeSessionInput { return v.Session }

type ReporterGitInput struct {
	Repository string `json:"repository"`
	Branch     string `json:"branch"`
	Commit     string `json:"commit"`
}

// GetRepository returns ReporterGitInput.Repository, and is useful for accessing the field via an interface.
func (v *ReporterGitInput) GetRepository() string { return v.Repository }

// GetBranch returns ReporterGitInput.Branch, and is useful for accessing the field via an interface.
func (v *ReporterGitInput) GetBranch() string { return v.Branch }

// GetCommit returns ReporterGitInput.Commit, and is useful for accessing the field via an interface.
func (v *ReporterGitInput) GetCommit() string { return v.Commit }

type ReporterInput struct {
	Notebook  ReporterNotebookInput  `json:"notebook"`
	Extension ReporterExtensionInput `json:"extension"`
}

// GetNotebook returns ReporterInput.Notebook, and is useful for accessing the field via an interface.
func (v *ReporterInput) GetNotebook() ReporterNotebookInput { return v.Notebook }

// GetExtension returns ReporterInput.Extension, and is useful for accessing the field via an interface.
func (v *ReporterInput) GetExtension() ReporterExtensionInput { return v.Extension }

type ReporterNotebookInput struct {
	Cells       []ReporterCellInput      `json:"cells"`
	Metadata    string                   `json:"metadata"`
	Frontmatter ReporterFrontmatterInput `json:"frontmatter"`
}

// GetCells returns ReporterNotebookInput.Cells, and is useful for accessing the field via an interface.
func (v *ReporterNotebookInput) GetCells() []ReporterCellInput { return v.Cells }

// GetMetadata returns ReporterNotebookInput.Metadata, and is useful for accessing the field via an interface.
func (v *ReporterNotebookInput) GetMetadata() string { return v.Metadata }

// GetFrontmatter returns ReporterNotebookInput.Frontmatter, and is useful for accessing the field via an interface.
func (v *ReporterNotebookInput) GetFrontmatter() ReporterFrontmatterInput { return v.Frontmatter }

type ReporterProcessInfoExitReasonInput struct {
	Type string `json:"type"`
	Code UInt32 `json:"code"`
}

// GetType returns ReporterProcessInfoExitReasonInput.Type, and is useful for accessing the field via an interface.
func (v *ReporterProcessInfoExitReasonInput) GetType() string { return v.Type }

// GetCode returns ReporterProcessInfoExitReasonInput.Code, and is useful for accessing the field via an interface.
func (v *ReporterProcessInfoExitReasonInput) GetCode() UInt32 { return v.Code }

type ReporterRunmeSessionDocumentInput struct {
	RelativePath string `json:"relativePath"`
}

// GetRelativePath returns ReporterRunmeSessionDocumentInput.RelativePath, and is useful for accessing the field via an interface.
func (v *ReporterRunmeSessionDocumentInput) GetRelativePath() string { return v.RelativePath }

type ReporterRunmeSessionInput struct {
	Id       string                            `json:"id"`
	Document ReporterRunmeSessionDocumentInput `json:"document"`
}

// GetId returns ReporterRunmeSessionInput.Id, and is useful for accessing the field via an interface.
func (v *ReporterRunmeSessionInput) GetId() string { return v.Id }

// GetDocument returns ReporterRunmeSessionInput.Document, and is useful for accessing the field via an interface.
func (v *ReporterRunmeSessionInput) GetDocument() ReporterRunmeSessionDocumentInput {
	return v.Document
}

type ReporterSessionInput struct {
	PlainOutput  string `json:"plainOutput"`
	MaskedOutput string `json:"maskedOutput"`
}

// GetPlainOutput returns ReporterSessionInput.PlainOutput, and is useful for accessing the field via an interface.
func (v *ReporterSessionInput) GetPlainOutput() string { return v.PlainOutput }

// GetMaskedOutput returns ReporterSessionInput.MaskedOutput, and is useful for accessing the field via an interface.
func (v *ReporterSessionInput) GetMaskedOutput() string { return v.MaskedOutput }

type ReporterTextRangeInput struct {
	Start int `json:"start"`
	End   int `json:"end"`
}

// GetStart returns ReporterTextRangeInput.Start, and is useful for accessing the field via an interface.
func (v *ReporterTextRangeInput) GetStart() int { return v.Start }

// GetEnd returns ReporterTextRangeInput.End, and is useful for accessing the field via an interface.
func (v *ReporterTextRangeInput) GetEnd() int { return v.End }

type UInt32 struct {
	Value int `json:"value"`
}

// GetValue returns UInt32.Value, and is useful for accessing the field via an interface.
func (v *UInt32) GetValue() int { return v.Value }

// __CreateExtensionCellOutputInput is used internally by genqlient
type __CreateExtensionCellOutputInput struct {
	Input ReporterInput `json:"input"`
}

// GetInput returns __CreateExtensionCellOutputInput.Input, and is useful for accessing the field via an interface.
func (v *__CreateExtensionCellOutputInput) GetInput() ReporterInput { return v.Input }

func CreateExtensionCellOutput(
	ctx context.Context,
	client graphql.Client,
	input ReporterInput,
) (*CreateExtensionCellOutputResponse, error) {
	req := &graphql.Request{
		OpName: "CreateExtensionCellOutput",
		Query: `
mutation CreateExtensionCellOutput ($input: ReporterInput!) {
	createExtensionCellOutput(input: $input) {
		id
		htmlUrl
		exitCode
		isSlackReady
	}
}
`,
		Variables: &__CreateExtensionCellOutputInput{
			Input: input,
		},
	}
	var err error

	var data CreateExtensionCellOutputResponse
	resp := &graphql.Response{Data: &data}

	err = client.MakeRequest(
		ctx,
		req,
		resp,
	)

	return &data, err
}
