// 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/transaction_execution_service.proto" (package "sui.rpc.v2", syntax proto3)
// tslint:disable
// @ts-nocheck
//
// Copyright (c) Mysten Labs, Inc.
// SPDX-License-Identifier: Apache-2.0
//
import type { RpcTransport } from '@protobuf-ts/runtime-rpc';
import type { ServiceInfo } from '@protobuf-ts/runtime-rpc';
import { TransactionExecutionService } from './transaction_execution_service.js';
import type { SimulateTransactionResponse } from './transaction_execution_service.js';
import type { SimulateTransactionRequest } from './transaction_execution_service.js';
import { stackIntercept } from '@protobuf-ts/runtime-rpc';
import type { ExecuteTransactionResponse } from './transaction_execution_service.js';
import type { ExecuteTransactionRequest } from './transaction_execution_service.js';
import type { UnaryCall } from '@protobuf-ts/runtime-rpc';
import type { RpcOptions } from '@protobuf-ts/runtime-rpc';
/**
 * @generated from protobuf service sui.rpc.v2.TransactionExecutionService
 */
export interface ITransactionExecutionServiceClient {
	/**
	 * @generated from protobuf rpc: ExecuteTransaction(sui.rpc.v2.ExecuteTransactionRequest) returns (sui.rpc.v2.ExecuteTransactionResponse);
	 */
	executeTransaction(
		input: ExecuteTransactionRequest,
		options?: RpcOptions,
	): UnaryCall<ExecuteTransactionRequest, ExecuteTransactionResponse>;
	/**
	 * @generated from protobuf rpc: SimulateTransaction(sui.rpc.v2.SimulateTransactionRequest) returns (sui.rpc.v2.SimulateTransactionResponse);
	 */
	simulateTransaction(
		input: SimulateTransactionRequest,
		options?: RpcOptions,
	): UnaryCall<SimulateTransactionRequest, SimulateTransactionResponse>;
}
/**
 * @generated from protobuf service sui.rpc.v2.TransactionExecutionService
 */
export class TransactionExecutionServiceClient
	implements ITransactionExecutionServiceClient, ServiceInfo
{
	typeName = TransactionExecutionService.typeName;
	methods = TransactionExecutionService.methods;
	options = TransactionExecutionService.options;
	constructor(private readonly _transport: RpcTransport) {}
	/**
	 * @generated from protobuf rpc: ExecuteTransaction(sui.rpc.v2.ExecuteTransactionRequest) returns (sui.rpc.v2.ExecuteTransactionResponse);
	 */
	executeTransaction(
		input: ExecuteTransactionRequest,
		options?: RpcOptions,
	): UnaryCall<ExecuteTransactionRequest, ExecuteTransactionResponse> {
		const method = this.methods[0],
			opt = this._transport.mergeOptions(options);
		return stackIntercept<ExecuteTransactionRequest, ExecuteTransactionResponse>(
			'unary',
			this._transport,
			method,
			opt,
			input,
		);
	}
	/**
	 * @generated from protobuf rpc: SimulateTransaction(sui.rpc.v2.SimulateTransactionRequest) returns (sui.rpc.v2.SimulateTransactionResponse);
	 */
	simulateTransaction(
		input: SimulateTransactionRequest,
		options?: RpcOptions,
	): UnaryCall<SimulateTransactionRequest, SimulateTransactionResponse> {
		const method = this.methods[1],
			opt = this._transport.mergeOptions(options);
		return stackIntercept<SimulateTransactionRequest, SimulateTransactionResponse>(
			'unary',
			this._transport,
			method,
			opt,
			input,
		);
	}
}
