+int
+frsh_transaction_init(frsh_transaction_t *transaction,
+ char *name)
+{
+ int ret = 0;
+ if (!transaction) {
+ ret = FRSH_ERR_BAD_ARGUMENT;
+ goto err;
+ }
+ *transaction = fres_transaction_new();
+ (*transaction)->name = name;
+err:
+ return ret;
+}
+
+void
+frsh_transaction_destroy(frsh_transaction_t *transaction)
+{
+ fres_transaction_destroy(*transaction);
+}
+
+int
+frsh_transaction_add_contract(frsh_transaction_t *transaction,
+ frsh_contract_t *contract,
+ int id)
+{
+ int ret;
+ if (!transaction || !*transaction ||
+ !contract || !*contract ||
+ id < 0) {
+ ret = FRSH_ERR_BAD_ARGUMENT;
+ goto err;
+ }
+
+ ret = fres_transaction_add_contract(*transaction, *contract);
+ if (ret == -1)
+ ret = FRSH_ERR_INTERNAL_ERROR;
+ else
+ ret = 0;
+err:
+ return ret;
+}