UNPKG

@xcapit/shelter-sdk

Version:

SDK for Shelter smart contracts on Stellar

42 lines (35 loc) 1.22 kB
import type { Tx } from "@stellar/stellar-sdk/contract"; import type { Keypair } from "shelter-sdk"; import { rpc } from "@stellar/stellar-sdk"; import type { Rpc } from "../rpc/rpc"; import { TxResult } from "../tx-result/tx-result"; export class Transaction { constructor( private readonly _rawTx: any, private readonly _signer: Keypair, private readonly _rpc: Rpc, private readonly _errorMsg = 'Shelter SDK Transaction Error', private readonly _simulate = false ) { } async result(): Promise<rpc.Api.GetTransactionResponse> { const tx = await this._txBuilt(); tx.sign(this._signer); return new TxResult(await this._txData(tx), this._errorMsg).validatedData(); } private async _txBuilt() { return this._simulate ? await this._simulatedTx(this._rawTx.built!) : this._rawTx.built!; } private async _simulatedTx(tx: any) { return this._rpc.assembleTransaction( tx, await this._rpc.server().simulateTransaction(tx) as unknown as Transaction ).build(); } private async _txData(tx: Tx): Promise<any> { return await this._rpc .server() .pollTransaction((await this._rpc.server().sendTransaction(tx)).hash); } }