// Copyright (c) Mysten Labs, Inc.
// SPDX-License-Identifier: Apache-2.0

// @generated by protobuf-ts 2.9.6 with parameter force_server_none,optimize_code_size,ts_nocheck
// @generated from protobuf file "sui/rpc/v2/argument.proto" (package "sui.rpc.v2", syntax proto3)
// tslint:disable
// @ts-nocheck
//
// Copyright (c) Mysten Labs, Inc.
// SPDX-License-Identifier: Apache-2.0
//
import { MessageType } from '@protobuf-ts/runtime';
/**
 * An argument to a programmable transaction command.
 *
 * @generated from protobuf message sui.rpc.v2.Argument
 */
export interface Argument {
	/**
	 * @generated from protobuf field: optional sui.rpc.v2.Argument.ArgumentKind kind = 1;
	 */
	kind?: Argument_ArgumentKind;
	/**
	 * Index of an input when `kind` is `INPUT`.
	 *
	 * @generated from protobuf field: optional uint32 input = 2;
	 */
	input?: number;
	/**
	 * Index of a result when `kind` is `RESULT`.
	 *
	 * @generated from protobuf field: optional uint32 result = 3;
	 */
	result?: number;
	/**
	 * Used to access a nested result when `kind` is `RESULT`.
	 *
	 * @generated from protobuf field: optional uint32 subresult = 4;
	 */
	subresult?: number;
}
/**
 * @generated from protobuf enum sui.rpc.v2.Argument.ArgumentKind
 */
export enum Argument_ArgumentKind {
	/**
	 * @generated from protobuf enum value: ARGUMENT_KIND_UNKNOWN = 0;
	 */
	ARGUMENT_KIND_UNKNOWN = 0,
	/**
	 * The gas coin.
	 *
	 * @generated from protobuf enum value: GAS = 1;
	 */
	GAS = 1,
	/**
	 * One of the input objects or primitive values (from
	 * `ProgrammableTransaction` inputs).
	 *
	 * @generated from protobuf enum value: INPUT = 2;
	 */
	INPUT = 2,
	/**
	 * The result of another command (from `ProgrammableTransaction` commands).
	 *
	 * @generated from protobuf enum value: RESULT = 3;
	 */
	RESULT = 3,
}
// @generated message type with reflection information, may provide speed optimized methods
class Argument$Type extends MessageType<Argument> {
	constructor() {
		super('sui.rpc.v2.Argument', [
			{
				no: 1,
				name: 'kind',
				kind: 'enum',
				opt: true,
				T: () => ['sui.rpc.v2.Argument.ArgumentKind', Argument_ArgumentKind],
			},
			{ no: 2, name: 'input', kind: 'scalar', opt: true, T: 13 /*ScalarType.UINT32*/ },
			{ no: 3, name: 'result', kind: 'scalar', opt: true, T: 13 /*ScalarType.UINT32*/ },
			{ no: 4, name: 'subresult', kind: 'scalar', opt: true, T: 13 /*ScalarType.UINT32*/ },
		]);
	}
}
/**
 * @generated MessageType for protobuf message sui.rpc.v2.Argument
 */
export const Argument = new Argument$Type();
