## Description
This PR adds support for writing and executing programmable transaction
blocks from the CLI. In a nutshell, a new command is introduced: `sui
client ptb`, where the user can pass in different arguments that
correspond either to transactions or other flags (e.g., preview to list
the transactions in the PTB without executing the PTB).
## Test Plan
```
cd crates/sui && cargo nextest run
```
---
If your changes are not user-facing and do not break anything, you can
skip the following section. Otherwise, please briefly describe what has
changed under the Release Notes section.
### Type of Change (Check all that apply)
- [ ] protocol change
- [x] user-visible impact
- [ ] breaking change for a client SDKs
- [ ] breaking change for FNs (FN binary must upgrade)
- [ ] breaking change for validators or node operators (must upgrade
binaries)
- [ ] breaking change for on-chain data layout
- [ ] necessitate either a data wipe or data migration
### Release notes
Added support for writing and executing programmable transaction blocks
from the CLI. In a nutshell, a new command is introduced: `sui client
ptb`, where the user can pass in different arguments that correspond
either to transactions or other flags (e.g., preview to list the
transactions in the PTB without executing the PTB).
Use `sui client ptb --help` for the help menu that explains all the
commands and shows some usage examples .
---------
Co-authored-by: Timothy Zakian <tim@mystenlabs.com>