import type {Buffer} from 'buffer'; import {Connection} from '../connection'; import type {TransactionSignature} from '../transaction'; import type {ConfirmOptions} from '../connection'; /** * Send and confirm a raw transaction * * If `commitment` option is not specified, defaults to 'max' commitment. * * @param {Connection} connection * @param {Buffer} rawTransaction * @param {ConfirmOptions} [options] * @returns {Promise} */ export async function sendAndConfirmRawTransaction( connection: Connection, rawTransaction: Buffer, options?: ConfirmOptions, ): Promise { const sendOptions = options && { skipPreflight: options.skipPreflight, preflightCommitment: options.preflightCommitment || options.commitment, }; const signature = await connection.sendRawTransaction( rawTransaction, sendOptions, ); const status = ( await connection.confirmTransaction( signature, options && options.commitment, ) ).value; if (status.err) { throw new Error( `Raw transaction ${signature} failed (${JSON.stringify(status)})`, ); } return signature; }