import type { SendTxRequest } from "@project-serum/anchor/dist/provider"; import type { TransactionType, TxRequestsTyped } from "../interfaces"; type TxWrapperSingle = { tx: SendTxRequest; innerIdx: number }; export const getAllTxRequests = ( reqs: TxRequestsTyped[] ): { tx: SendTxRequest; type: TransactionType; reqIdx: number; reqInnerIdx: number; }[] => { const allTxRequests = reqs .map((req, i) => req.txs .map((t: SendTxRequest | SendTxRequest[], i: number) => { return { tx: t, innerIdx: i }; }) .map((txWrapper) => { if (!Array.isArray(txWrapper.tx)) return [txWrapper] as TxWrapperSingle[]; else return (txWrapper.tx as SendTxRequest[]).map((t) => { return { tx: t, innerIdx: txWrapper.innerIdx } as TxWrapperSingle; }) as TxWrapperSingle[]; }) .flat() .map((tx) => { return { tx: tx.tx, type: req.type, reqIdx: i, reqInnerIdx: tx.innerIdx, }; }) ) .flat(); return allTxRequests; };