Offer: (<Result, Args>(invitation: ERef<Invitation<Result, Args>>, proposal?: Proposal, paymentKeywordRecord?: PaymentPKeywordRecord, offerArgs?: Args) => Promise<UserSeat<Result>>)

To redeem an invitation, the user normally provides a proposal (their rules for the offer) as well as payments to be escrowed by Zoe. If either the proposal or payments would be empty, indicate this by omitting that argument or passing undefined, rather than passing an empty record.

The proposal has three parts: want and give are used by Zoe to enforce offer safety, and exit is used to specify the particular payout-liveness policy that Zoe can guarantee. want and give are objects with keywords as keys and amounts as values. paymentKeywordRecord is a record with keywords as keys, and the values are the actual payments to be escrowed. A payment is expected for every rule under give.