Description:
The SDK's cancelInvoice method sends 2 arguments (submitterAddress, invoiceId) but the contract's cancel_invoice only accepts 1 user argument (invoice_id: u64). The freelancer/submitter is determined internally via require_submitter_by_id and should not be passed.
pub fn cancel_invoice(env: Env, invoice_id: u64)
// SDK at cancelInvoice.ts:60-64 — WRONG
const op = contract.call(
"cancel_invoice",
nativeToScVal(submitterAddress, { type: "address" }), // EXTRA
nativeToScVal(invoiceId, { type: "u64" })
);
Why it matters: Invoice cancellation is broken through the SDK. Freelancers cannot cancel pending invoices, and partially-funded invoices cannot trigger LP refunds.
Acceptance Criteria:
Relevant Files: sdk/src/methods/cancelInvoice.ts:60-64, contracts/invoice_liquidity/src/lib.rs:1393
Description:
The SDK's
cancelInvoicemethod sends 2 arguments (submitterAddress,invoiceId) but the contract'scancel_invoiceonly accepts 1 user argument (invoice_id: u64). The freelancer/submitter is determined internally viarequire_submitter_by_idand should not be passed.Why it matters: Invoice cancellation is broken through the SDK. Freelancers cannot cancel pending invoices, and partially-funded invoices cannot trigger LP refunds.
Acceptance Criteria:
submitterAddressargument from the contract callinvoiceIdas the argumentrequire_submitter_by_idRelevant Files:
sdk/src/methods/cancelInvoice.ts:60-64,contracts/invoice_liquidity/src/lib.rs:1393