Builds and signs a transaction from a list of signing keys and
instructions. The fee payer is the first writable signer encountered
across the instructions' account metas, and account keys are canonically
ordered (fee payer first, then each privilege section sorted by pubkey
bytes; see canonicalizeAccountOrder). The private keys passed here must
be ordered to match the resulting account order (fee payer first),
otherwise the produced signatures will not correspond to the right
account keys. If you would rather name the fee payer explicitly and not
worry about signer order, consider newTransactionIntentWithPayer,
which orders signatures automatically.
If no instruction marks a signer writable (a memo-only or SPL authority-only instruction list), the message compiled here has no valid fee payer and the node rejects it at sanitize time; use newTransactionIntentWithPayer for such transactions.