import { SorobanDataBuilder, rpc as SorobanRpc, xdr } from '@stellar/stellar-sdk';
export type SimulationErrorInfo = errorBase | errorData | restoreData;
export type errorBase = {
    id: string;
    latestLedger: number;
    events: xdr.DiagnosticEvent[];
};
export type errorData = errorBase & {
    error: string;
};
export type restoreData = errorBase & {
    result: SorobanRpc.Api.SimulateHostFunctionResult;
    restorePreamble: {
        minResourceFee: string;
        transactionData: SorobanDataBuilder;
    };
};
export declare const extractSimulationErrorData: (simulation: SorobanRpc.Api.SimulateTransactionErrorResponse) => errorData;
export declare const extractSimulationRestoreData: (simulation: SorobanRpc.Api.SimulateTransactionRestoreResponse) => restoreData;
export declare const extractSimulationBaseData: (simulation: SorobanRpc.Api.SimulateTransactionResponse) => errorBase;
export type SendTransactionErrorInfo = BaseSendTransactionResponse | SendTransactionFailed;
type SendTransactionFailed = BaseSendTransactionResponse & {
    errorResultXdr?: string;
    opErrorCode?: string;
};
type BaseSendTransactionResponse = {
    status: SorobanRpc.Api.SendTransactionStatus;
    hash: string;
    latestLedger: number;
    latestLedgerCloseTime: number;
};
export declare const extractSendTransactionErrorData: (response: SorobanRpc.Api.SendTransactionResponse | SorobanRpc.Api.RawSendTransactionResponse) => SendTransactionErrorInfo;
export type GetTransactionErrorInfo = GetTransactionBase | GetTransactionFailedErrorInfo;
type GetTransactionBase = {
    status: SorobanRpc.Api.GetTransactionStatus;
    latestLedger: number;
    latestLedgerCloseTime: number;
    oldestLedger: number;
    oldestLedgerCloseTime: number;
};
export type GetTransactionFailedErrorInfo = GetTransactionBase & {
    status: SorobanRpc.Api.GetTransactionStatus.FAILED;
    opCode?: string;
    ledger: number;
    createdAt: number;
    applicationOrder: number;
    feeBump: boolean;
    envelopeXdr: xdr.TransactionEnvelope;
    resultXdr: xdr.TransactionResult;
    resultMetaXdr: xdr.TransactionMeta;
};
export type GetTransactionSuccessErrorInfo = GetTransactionBase & {
    status: SorobanRpc.Api.GetTransactionStatus.SUCCESS;
    opCode?: string;
    ledger: number;
    createdAt: number;
    applicationOrder: number;
    feeBump: boolean;
    envelopeXdr: xdr.TransactionEnvelope;
    resultXdr: xdr.TransactionResult;
    resultMetaXdr: xdr.TransactionMeta;
    returnValue?: xdr.ScVal;
};
export declare const extractGetTransactionData: (response: SorobanRpc.Api.GetFailedTransactionResponse | SorobanRpc.Api.GetTransactionResponse | SorobanRpc.Api.SendTransactionResponse) => GetTransactionErrorInfo;
export {};
