import { ServiceType } from "@protobuf-ts/runtime-rpc";
import { MessageType } from "@protobuf-ts/runtime";
import { Value } from "../../../google/protobuf/struct.js";
import { Bcs } from "./bcs.js";
import { Argument } from "./argument.js";
import { ExecutedTransaction } from "./executed_transaction.js";
import { FieldMask } from "../../../google/protobuf/field_mask.js";
import { UserSignature } from "./signature.js";
import { Transaction } from "./transaction.js";
export interface ExecuteTransactionRequest {
    transaction?: Transaction;
    signatures: UserSignature[];
    readMask?: FieldMask;
}
export interface ExecuteTransactionResponse {
    transaction?: ExecutedTransaction;
}
export interface SimulateTransactionRequest {
    transaction?: Transaction;
    readMask?: FieldMask;
    checks?: SimulateTransactionRequest_TransactionChecks;
    doGasSelection?: boolean;
}
export declare enum SimulateTransactionRequest_TransactionChecks {
    ENABLED = 0,
    DISABLED = 1
}
export interface SimulateTransactionResponse {
    transaction?: ExecutedTransaction;
    commandOutputs: CommandResult[];
}
export interface CommandResult {
    returnValues: CommandOutput[];
    mutatedByRef: CommandOutput[];
}
export interface CommandOutput {
    argument?: Argument;
    value?: Bcs;
    json?: Value;
}
declare class ExecuteTransactionRequest$Type extends MessageType<ExecuteTransactionRequest> {
    constructor();
}
export declare const ExecuteTransactionRequest: ExecuteTransactionRequest$Type;
declare class ExecuteTransactionResponse$Type extends MessageType<ExecuteTransactionResponse> {
    constructor();
}
export declare const ExecuteTransactionResponse: ExecuteTransactionResponse$Type;
declare class SimulateTransactionRequest$Type extends MessageType<SimulateTransactionRequest> {
    constructor();
}
export declare const SimulateTransactionRequest: SimulateTransactionRequest$Type;
declare class SimulateTransactionResponse$Type extends MessageType<SimulateTransactionResponse> {
    constructor();
}
export declare const SimulateTransactionResponse: SimulateTransactionResponse$Type;
declare class CommandResult$Type extends MessageType<CommandResult> {
    constructor();
}
export declare const CommandResult: CommandResult$Type;
declare class CommandOutput$Type extends MessageType<CommandOutput> {
    constructor();
}
export declare const CommandOutput: CommandOutput$Type;
export declare const TransactionExecutionService: ServiceType;
export {};
