From a40c636fdd11abfae10d64aca4121f58ed69ad73 Mon Sep 17 00:00:00 2001 From: Diane Huxley Date: Thu, 14 Dec 2023 14:27:30 -0800 Subject: [PATCH 1/6] Update currency string representation --- packages/http-server/src/fakes.ts | 4 ++-- packages/protocol/README.md | 4 ++-- packages/protocol/src/dev-tools.ts | 10 +++++----- packages/protocol/src/message-kinds/rfq.ts | 6 +++--- packages/protocol/src/resource-kinds/offering.ts | 4 ++-- packages/protocol/src/types.ts | 12 ++++++------ packages/protocol/tests/offering.spec.ts | 4 ++-- packages/protocol/tests/rfq.spec.ts | 6 +++--- 8 files changed, 25 insertions(+), 25 deletions(-) diff --git a/packages/http-server/src/fakes.ts b/packages/http-server/src/fakes.ts index 001b0aae..609e8b7b 100644 --- a/packages/http-server/src/fakes.ts +++ b/packages/http-server/src/fakes.ts @@ -10,9 +10,9 @@ const offering = Offering.create({ }, payoutCurrency: { currencyCode : 'BTC', - maxSubunits : '99952611' + maxAmount : '999526.11' }, - payoutUnitsPerPayinUnit : '0.000038', + rate : '0.000038', payinMethods : [{ kind : 'DEBIT_CARD', requiredPaymentDetails : { diff --git a/packages/protocol/README.md b/packages/protocol/README.md index 442cb457..089b017d 100644 --- a/packages/protocol/README.md +++ b/packages/protocol/README.md @@ -48,8 +48,8 @@ const rfq = Rfq.create({ btcAddress: '1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa' } }, - quoteAmountSubunits : '20000', - vcs : '' + amount : '200.00', + vcs : '' } }) diff --git a/packages/protocol/src/dev-tools.ts b/packages/protocol/src/dev-tools.ts index fa09007a..dfdd1c9f 100644 --- a/packages/protocol/src/dev-tools.ts +++ b/packages/protocol/src/dev-tools.ts @@ -83,10 +83,10 @@ export class DevTools { }, payoutCurrency: { currencyCode : 'BTC', - maxSubunits : '99952611' + maxAmount : '999526.11' }, - payoutUnitsPerPayinUnit : '0.00003826', - payinMethods : [{ + rate : '0.00003826', + payinMethods : [{ kind : 'DEBIT_CARD', requiredPaymentDetails : { $schema : 'http://json-schema.org/draft-07/schema', @@ -202,8 +202,8 @@ export class DevTools { btcAddress: '1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa' } }, - payinSubunits : '20000', - claims : [signedCredential] + payinAmount : '20000', + claims : [signedCredential] } return Rfq.create({ diff --git a/packages/protocol/src/message-kinds/rfq.ts b/packages/protocol/src/message-kinds/rfq.ts index bf54a0f2..1e840ec8 100644 --- a/packages/protocol/src/message-kinds/rfq.ts +++ b/packages/protocol/src/message-kinds/rfq.ts @@ -57,7 +57,7 @@ export class Rfq extends Message<'rfq'> { throw new Error(`offering id mismatch. (rfq) ${this.offeringId} !== ${offering.metadata.id} (offering)`) } - // TODO: validate rfq's quoteAmountSubunits against offering's quoteCurrency min/max + // TODO: validate rfq's payinAmount against offering's quoteCurrency min/max // TODO: validate rfq's payinMethod.kind against offering's payinMethods // TODO: validate rfq's payinMethod.paymentDetails against offering's respective requiredPaymentDetails json schema @@ -91,8 +91,8 @@ export class Rfq extends Message<'rfq'> { } /** Amount of payin currency you want to spend in order to receive payout currency */ - get payinSubunits() { - return this.data.payinSubunits + get payinAmount() { + return this.data.payinAmount } /** Array of claims that satisfy the respective offering's requiredClaims */ diff --git a/packages/protocol/src/resource-kinds/offering.ts b/packages/protocol/src/resource-kinds/offering.ts index 612edb23..4d57cc46 100644 --- a/packages/protocol/src/resource-kinds/offering.ts +++ b/packages/protocol/src/resource-kinds/offering.ts @@ -40,8 +40,8 @@ export class Offering extends Resource<'offering'> { } /** Number of payout currency units for one payin currency unit (i.e 290000 USD for 1 BTC) */ - get payoutUnitsPerPayinUnit() { - return this.data.payoutUnitsPerPayinUnit + get rate() { + return this.data.rate } /** Details about the currency that the PFI is buying in exchange for payoutCurrency. */ diff --git a/packages/protocol/src/types.ts b/packages/protocol/src/types.ts index f407f713..21f803b6 100644 --- a/packages/protocol/src/types.ts +++ b/packages/protocol/src/types.ts @@ -75,7 +75,7 @@ export type OfferingData = { /** Brief description of what is being offered. */ description: string /** Number of _payout_ currency units for one _payin_ currency unit (i.e 290000 USD for 1 BTC) */ - payoutUnitsPerPayinUnit: string + rate: string /** Details about the currency that the PFI is selling. */ payoutCurrency: CurrencyDetails /** Details about the currency that the PFI is buying in exchange for payout currency. */ @@ -96,9 +96,9 @@ export type CurrencyDetails = { /** ISO 3166 currency code string */ currencyCode: string /** Minimum amount of currency that can be requested */ - minSubunits?: string + minAmount?: string /** Maximum amount of currency that can be requested */ - maxSubunits?: string + maxAmount?: string } /** @@ -182,7 +182,7 @@ export type RfqData = { /** Offering which Alice would like to get a quote for */ offeringId: string /** Amount of _payin_ currency alice wants to spend in order to receive payout currency */ - payinSubunits: string + payinAmount: string /** Selected payment method that Alice will use to send the listed payin currency to the PFI. */ payinMethod: SelectedPaymentMethod /** Selected payment method that the PFI will use to send the listed base currency to Alice */ @@ -226,9 +226,9 @@ export type QuoteDetails = { /** ISO 3166 currency code string */ currencyCode: string /** The amount of currency expressed in the smallest respective unit */ - amountSubunits: string + amount: string /** the amount paid in fees */ - feeSubunits?: string + fee?: string } /** diff --git a/packages/protocol/tests/offering.spec.ts b/packages/protocol/tests/offering.spec.ts index ff984152..bf7133ba 100644 --- a/packages/protocol/tests/offering.spec.ts +++ b/packages/protocol/tests/offering.spec.ts @@ -12,9 +12,9 @@ const offeringData: OfferingData = { }, payoutCurrency: { currencyCode : 'BTC', - maxSubunits : '99952611' + maxAmount : '999526.11' }, - payoutUnitsPerPayinUnit : '0.00003826', + rate : '0.00003826', payinMethods : [{ kind : 'DEBIT_CARD', requiredPaymentDetails : { diff --git a/packages/protocol/tests/rfq.spec.ts b/packages/protocol/tests/rfq.spec.ts index 0752f527..3c170fdd 100644 --- a/packages/protocol/tests/rfq.spec.ts +++ b/packages/protocol/tests/rfq.spec.ts @@ -21,7 +21,7 @@ const rfqData: RfqData = { btcAddress: '1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa' } }, - payinSubunits : '20000', + payinAmount : '20000', claims : [''] } @@ -190,7 +190,7 @@ describe('Rfq', () => { btcAddress: '1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa' } }, - payinSubunits : '20000', + payinAmount : '20000', claims : [signedCredential] } }) @@ -229,7 +229,7 @@ describe('Rfq', () => { btcAddress: '1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa' } }, - payinSubunits : '20000', + payinAmount : '20000', claims : [signedCredential] } }) From 1ef9114325883048303bbc0cae570ca0759029aa Mon Sep 17 00:00:00 2001 From: Diane Huxley Date: Thu, 14 Dec 2023 14:52:06 -0800 Subject: [PATCH 2/6] Validate structure of messages and resources during creation --- packages/protocol/src/message-kinds/close.ts | 6 ++++-- packages/protocol/src/message-kinds/order-status.ts | 7 +++++-- packages/protocol/src/message-kinds/order.ts | 6 ++++-- packages/protocol/src/message-kinds/quote.ts | 6 ++++-- packages/protocol/src/message-kinds/rfq.ts | 6 ++++-- 5 files changed, 21 insertions(+), 10 deletions(-) diff --git a/packages/protocol/src/message-kinds/close.ts b/packages/protocol/src/message-kinds/close.ts index 34bd9abd..831f2357 100644 --- a/packages/protocol/src/message-kinds/close.ts +++ b/packages/protocol/src/message-kinds/close.ts @@ -22,7 +22,7 @@ export class Close extends Message<'close'> { * Creates a close message with the given options * @param opts - options to create a close message */ - static create(opts: CreateCloseOptions) { + static async create(opts: CreateCloseOptions) { const metadata: MessageMetadata<'close'> = { ...opts.metadata, kind : 'close' as const, @@ -31,7 +31,9 @@ export class Close extends Message<'close'> { } const message = { metadata, data: opts.data } - return new Close(message) + const close = new Close(message) + await Message.validate(close) + return close } /** an explanation of why the exchange is being closed */ diff --git a/packages/protocol/src/message-kinds/order-status.ts b/packages/protocol/src/message-kinds/order-status.ts index efc8f1f8..6abcc59e 100644 --- a/packages/protocol/src/message-kinds/order-status.ts +++ b/packages/protocol/src/message-kinds/order-status.ts @@ -1,5 +1,6 @@ import type { MessageKind, MessageKindModel, MessageMetadata } from '../types.js' import { Message } from '../message.js' +import { order } from '../../generated/compiled-validators.js' /** * Options passed to {@link OrderStatus.create} @@ -23,7 +24,7 @@ export class OrderStatus extends Message<'orderstatus'> { * Creates an order status with the given options * @param opts - options to create an order status */ - static create(opts: CreateOrderStatusOptions) { + static async create(opts: CreateOrderStatusOptions) { const metadata: MessageMetadata<'orderstatus'> = { ...opts.metadata, kind : 'orderstatus' as const, @@ -32,7 +33,9 @@ export class OrderStatus extends Message<'orderstatus'> { } const message = { metadata, data: opts.data } - return new OrderStatus(message) + const orderStatus = new OrderStatus(message) + await Message.validate(order) + return orderStatus } /** Current status of Order that's being executed (e.g. PROCESSING, COMPLETED, FAILED etc.) */ diff --git a/packages/protocol/src/message-kinds/order.ts b/packages/protocol/src/message-kinds/order.ts index 4812341b..34f70685 100644 --- a/packages/protocol/src/message-kinds/order.ts +++ b/packages/protocol/src/message-kinds/order.ts @@ -22,7 +22,7 @@ export class Order extends Message<'order'> { * Creates an order with the given options * @param opts - options to create an order */ - static create(opts: CreateOrderOptions) { + static async create(opts: CreateOrderOptions) { const metadata: MessageMetadata<'order'> = { ...opts.metadata, kind : 'order' as const, @@ -31,6 +31,8 @@ export class Order extends Message<'order'> { } const message = { metadata, data: {} } - return new Order(message) + const order = new Order(message) + await Message.validate(order) + return order } } \ No newline at end of file diff --git a/packages/protocol/src/message-kinds/quote.ts b/packages/protocol/src/message-kinds/quote.ts index 4c4fe7e0..801e1b2c 100644 --- a/packages/protocol/src/message-kinds/quote.ts +++ b/packages/protocol/src/message-kinds/quote.ts @@ -23,7 +23,7 @@ export class Quote extends Message<'quote'> { * Creates a quote message with the given options * @param opts - options to create a quote */ - static create(opts: CreateQuoteOptions) { + static async create(opts: CreateQuoteOptions) { const metadata: MessageMetadata<'quote'> = { ...opts.metadata, kind : 'quote' as const, @@ -32,7 +32,9 @@ export class Quote extends Message<'quote'> { } const message = { metadata, data: opts.data } - return new Quote(message) + const quote = new Quote(message) + await Message.validate(quote) + return quote } /** When this quote expires. Expressed as ISO8601 */ diff --git a/packages/protocol/src/message-kinds/rfq.ts b/packages/protocol/src/message-kinds/rfq.ts index 1e840ec8..90ea7a23 100644 --- a/packages/protocol/src/message-kinds/rfq.ts +++ b/packages/protocol/src/message-kinds/rfq.ts @@ -30,7 +30,7 @@ export class Rfq extends Message<'rfq'> { * @param opts - options to create an rfq * @returns {@link Rfq} */ - static create(opts: CreateRfqOptions) { + static async create(opts: CreateRfqOptions) { const id = Message.generateId('rfq') const metadata: MessageMetadata<'rfq'> = { ...opts.metadata, @@ -44,7 +44,9 @@ export class Rfq extends Message<'rfq'> { // TODO: hash `data.payoutMethod.paymentDetails` and set `private` const message = { metadata, data: opts.data } - return new Rfq(message) + const rfq = new Rfq(message) + await Message.validate(rfq) + return rfq } /** From 80975b660146c25ad34986f97e7b4f0e604105d0 Mon Sep 17 00:00:00 2001 From: Diane Huxley Date: Thu, 14 Dec 2023 15:55:37 -0800 Subject: [PATCH 3/6] Lint --- packages/http-server/src/fakes.ts | 4 ++-- packages/protocol/src/resource-kinds/offering.ts | 6 ++++-- packages/protocol/tests/offering.spec.ts | 4 ++-- packages/protocol/tests/rfq.spec.ts | 6 +++--- 4 files changed, 11 insertions(+), 9 deletions(-) diff --git a/packages/http-server/src/fakes.ts b/packages/http-server/src/fakes.ts index 609e8b7b..b7d41c86 100644 --- a/packages/http-server/src/fakes.ts +++ b/packages/http-server/src/fakes.ts @@ -12,8 +12,8 @@ const offering = Offering.create({ currencyCode : 'BTC', maxAmount : '999526.11' }, - rate : '0.000038', - payinMethods : [{ + rate : '0.000038', + payinMethods : [{ kind : 'DEBIT_CARD', requiredPaymentDetails : { $schema : 'http://json-schema.org/draft-07/schema', diff --git a/packages/protocol/src/resource-kinds/offering.ts b/packages/protocol/src/resource-kinds/offering.ts index 4d57cc46..fb08cf69 100644 --- a/packages/protocol/src/resource-kinds/offering.ts +++ b/packages/protocol/src/resource-kinds/offering.ts @@ -22,7 +22,7 @@ export class Offering extends Resource<'offering'> { * Creates an Offering with the given options * @param opts - options to create an offering */ - static create(opts: CreateOfferingOptions) { + static async create(opts: CreateOfferingOptions) { const metadata: ResourceMetadata<'offering'> = { ...opts.metadata, kind : 'offering', @@ -31,7 +31,9 @@ export class Offering extends Resource<'offering'> { } const message = { metadata, data: opts.data } - return new Offering(message) + const offering = new Offering(message) + await Resource.validate(offering) + return offering } /** Brief description of what is being offered. */ diff --git a/packages/protocol/tests/offering.spec.ts b/packages/protocol/tests/offering.spec.ts index bf7133ba..43be91ca 100644 --- a/packages/protocol/tests/offering.spec.ts +++ b/packages/protocol/tests/offering.spec.ts @@ -14,8 +14,8 @@ const offeringData: OfferingData = { currencyCode : 'BTC', maxAmount : '999526.11' }, - rate : '0.00003826', - payinMethods : [{ + rate : '0.00003826', + payinMethods : [{ kind : 'DEBIT_CARD', requiredPaymentDetails : { $schema : 'http://json-schema.org/draft-07/schema', diff --git a/packages/protocol/tests/rfq.spec.ts b/packages/protocol/tests/rfq.spec.ts index 3c170fdd..5633721b 100644 --- a/packages/protocol/tests/rfq.spec.ts +++ b/packages/protocol/tests/rfq.spec.ts @@ -22,7 +22,7 @@ const rfqData: RfqData = { } }, payinAmount : '20000', - claims : [''] + claims : [''] } describe('Rfq', () => { @@ -191,7 +191,7 @@ describe('Rfq', () => { } }, payinAmount : '20000', - claims : [signedCredential] + claims : [signedCredential] } }) @@ -230,7 +230,7 @@ describe('Rfq', () => { } }, payinAmount : '20000', - claims : [signedCredential] + claims : [signedCredential] } }) From 84dae7c158143cb30dc7dea3f63adafed3ba46df Mon Sep 17 00:00:00 2001 From: Diane Huxley Date: Thu, 14 Dec 2023 16:33:41 -0800 Subject: [PATCH 4/6] await --- packages/http-server/src/fakes.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/http-server/src/fakes.ts b/packages/http-server/src/fakes.ts index b7d41c86..d4e14ff8 100644 --- a/packages/http-server/src/fakes.ts +++ b/packages/http-server/src/fakes.ts @@ -1,7 +1,7 @@ import { MessageKindClass, Offering, Rfq, Quote, Order, OrderStatus, Close } from '@tbdex/protocol' import { OfferingsApi, ExchangesApi } from './main.js' -const offering = Offering.create({ +const offering = await Offering.create({ metadata : { from: 'did:ex:pfi' }, data : { description : 'Selling BTC for USD', From 3699b574572672c62c1623178c2be567350ed7fc Mon Sep 17 00:00:00 2001 From: Diane Huxley Date: Fri, 5 Jan 2024 10:35:48 -0800 Subject: [PATCH 5/6] PR comments --- packages/protocol/src/dev-tools.ts | 8 ++++---- packages/protocol/src/message-kinds/close.ts | 6 ++---- packages/protocol/src/message-kinds/order-status.ts | 7 ++----- packages/protocol/src/message-kinds/order.ts | 4 ++-- packages/protocol/src/message-kinds/quote.ts | 6 ++---- packages/protocol/src/message-kinds/rfq.ts | 6 ++---- packages/protocol/src/resource-kinds/offering.ts | 10 ++++------ packages/protocol/src/types.ts | 2 +- packages/protocol/tests/offering.spec.ts | 4 ++-- packages/protocol/tests/rfq.spec.ts | 8 ++++---- 10 files changed, 25 insertions(+), 36 deletions(-) diff --git a/packages/protocol/src/dev-tools.ts b/packages/protocol/src/dev-tools.ts index dfdd1c9f..62014c39 100644 --- a/packages/protocol/src/dev-tools.ts +++ b/packages/protocol/src/dev-tools.ts @@ -75,7 +75,7 @@ export class DevTools { /** * creates and returns an example offering. Useful for testing purposes */ - static createOffering() { + static createOffering(): Offering { const offeringData: OfferingData = { description : 'Selling BTC for USD', payinCurrency : { @@ -85,8 +85,8 @@ export class DevTools { currencyCode : 'BTC', maxAmount : '999526.11' }, - rate : '0.00003826', - payinMethods : [{ + payoutUnitsPerPayinUnit : '0.00003826', + payinMethods : [{ kind : 'DEBIT_CARD', requiredPaymentDetails : { $schema : 'http://json-schema.org/draft-07/schema', @@ -202,7 +202,7 @@ export class DevTools { btcAddress: '1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa' } }, - payinAmount : '20000', + payinAmount : '200.00', claims : [signedCredential] } diff --git a/packages/protocol/src/message-kinds/close.ts b/packages/protocol/src/message-kinds/close.ts index 831f2357..34bd9abd 100644 --- a/packages/protocol/src/message-kinds/close.ts +++ b/packages/protocol/src/message-kinds/close.ts @@ -22,7 +22,7 @@ export class Close extends Message<'close'> { * Creates a close message with the given options * @param opts - options to create a close message */ - static async create(opts: CreateCloseOptions) { + static create(opts: CreateCloseOptions) { const metadata: MessageMetadata<'close'> = { ...opts.metadata, kind : 'close' as const, @@ -31,9 +31,7 @@ export class Close extends Message<'close'> { } const message = { metadata, data: opts.data } - const close = new Close(message) - await Message.validate(close) - return close + return new Close(message) } /** an explanation of why the exchange is being closed */ diff --git a/packages/protocol/src/message-kinds/order-status.ts b/packages/protocol/src/message-kinds/order-status.ts index 6abcc59e..efc8f1f8 100644 --- a/packages/protocol/src/message-kinds/order-status.ts +++ b/packages/protocol/src/message-kinds/order-status.ts @@ -1,6 +1,5 @@ import type { MessageKind, MessageKindModel, MessageMetadata } from '../types.js' import { Message } from '../message.js' -import { order } from '../../generated/compiled-validators.js' /** * Options passed to {@link OrderStatus.create} @@ -24,7 +23,7 @@ export class OrderStatus extends Message<'orderstatus'> { * Creates an order status with the given options * @param opts - options to create an order status */ - static async create(opts: CreateOrderStatusOptions) { + static create(opts: CreateOrderStatusOptions) { const metadata: MessageMetadata<'orderstatus'> = { ...opts.metadata, kind : 'orderstatus' as const, @@ -33,9 +32,7 @@ export class OrderStatus extends Message<'orderstatus'> { } const message = { metadata, data: opts.data } - const orderStatus = new OrderStatus(message) - await Message.validate(order) - return orderStatus + return new OrderStatus(message) } /** Current status of Order that's being executed (e.g. PROCESSING, COMPLETED, FAILED etc.) */ diff --git a/packages/protocol/src/message-kinds/order.ts b/packages/protocol/src/message-kinds/order.ts index 34f70685..32c74fde 100644 --- a/packages/protocol/src/message-kinds/order.ts +++ b/packages/protocol/src/message-kinds/order.ts @@ -22,7 +22,7 @@ export class Order extends Message<'order'> { * Creates an order with the given options * @param opts - options to create an order */ - static async create(opts: CreateOrderOptions) { + static create(opts: CreateOrderOptions) { const metadata: MessageMetadata<'order'> = { ...opts.metadata, kind : 'order' as const, @@ -32,7 +32,7 @@ export class Order extends Message<'order'> { const message = { metadata, data: {} } const order = new Order(message) - await Message.validate(order) + Message.validate(order) return order } } \ No newline at end of file diff --git a/packages/protocol/src/message-kinds/quote.ts b/packages/protocol/src/message-kinds/quote.ts index 801e1b2c..4c4fe7e0 100644 --- a/packages/protocol/src/message-kinds/quote.ts +++ b/packages/protocol/src/message-kinds/quote.ts @@ -23,7 +23,7 @@ export class Quote extends Message<'quote'> { * Creates a quote message with the given options * @param opts - options to create a quote */ - static async create(opts: CreateQuoteOptions) { + static create(opts: CreateQuoteOptions) { const metadata: MessageMetadata<'quote'> = { ...opts.metadata, kind : 'quote' as const, @@ -32,9 +32,7 @@ export class Quote extends Message<'quote'> { } const message = { metadata, data: opts.data } - const quote = new Quote(message) - await Message.validate(quote) - return quote + return new Quote(message) } /** When this quote expires. Expressed as ISO8601 */ diff --git a/packages/protocol/src/message-kinds/rfq.ts b/packages/protocol/src/message-kinds/rfq.ts index 90ea7a23..1e840ec8 100644 --- a/packages/protocol/src/message-kinds/rfq.ts +++ b/packages/protocol/src/message-kinds/rfq.ts @@ -30,7 +30,7 @@ export class Rfq extends Message<'rfq'> { * @param opts - options to create an rfq * @returns {@link Rfq} */ - static async create(opts: CreateRfqOptions) { + static create(opts: CreateRfqOptions) { const id = Message.generateId('rfq') const metadata: MessageMetadata<'rfq'> = { ...opts.metadata, @@ -44,9 +44,7 @@ export class Rfq extends Message<'rfq'> { // TODO: hash `data.payoutMethod.paymentDetails` and set `private` const message = { metadata, data: opts.data } - const rfq = new Rfq(message) - await Message.validate(rfq) - return rfq + return new Rfq(message) } /** diff --git a/packages/protocol/src/resource-kinds/offering.ts b/packages/protocol/src/resource-kinds/offering.ts index fb08cf69..612edb23 100644 --- a/packages/protocol/src/resource-kinds/offering.ts +++ b/packages/protocol/src/resource-kinds/offering.ts @@ -22,7 +22,7 @@ export class Offering extends Resource<'offering'> { * Creates an Offering with the given options * @param opts - options to create an offering */ - static async create(opts: CreateOfferingOptions) { + static create(opts: CreateOfferingOptions) { const metadata: ResourceMetadata<'offering'> = { ...opts.metadata, kind : 'offering', @@ -31,9 +31,7 @@ export class Offering extends Resource<'offering'> { } const message = { metadata, data: opts.data } - const offering = new Offering(message) - await Resource.validate(offering) - return offering + return new Offering(message) } /** Brief description of what is being offered. */ @@ -42,8 +40,8 @@ export class Offering extends Resource<'offering'> { } /** Number of payout currency units for one payin currency unit (i.e 290000 USD for 1 BTC) */ - get rate() { - return this.data.rate + get payoutUnitsPerPayinUnit() { + return this.data.payoutUnitsPerPayinUnit } /** Details about the currency that the PFI is buying in exchange for payoutCurrency. */ diff --git a/packages/protocol/src/types.ts b/packages/protocol/src/types.ts index 21f803b6..bc12d237 100644 --- a/packages/protocol/src/types.ts +++ b/packages/protocol/src/types.ts @@ -75,7 +75,7 @@ export type OfferingData = { /** Brief description of what is being offered. */ description: string /** Number of _payout_ currency units for one _payin_ currency unit (i.e 290000 USD for 1 BTC) */ - rate: string + payoutUnitsPerPayinUnit: string /** Details about the currency that the PFI is selling. */ payoutCurrency: CurrencyDetails /** Details about the currency that the PFI is buying in exchange for payout currency. */ diff --git a/packages/protocol/tests/offering.spec.ts b/packages/protocol/tests/offering.spec.ts index 43be91ca..50d98705 100644 --- a/packages/protocol/tests/offering.spec.ts +++ b/packages/protocol/tests/offering.spec.ts @@ -14,8 +14,8 @@ const offeringData: OfferingData = { currencyCode : 'BTC', maxAmount : '999526.11' }, - rate : '0.00003826', - payinMethods : [{ + payoutUnitsPerPayinUnit : '0.00003826', + payinMethods : [{ kind : 'DEBIT_CARD', requiredPaymentDetails : { $schema : 'http://json-schema.org/draft-07/schema', diff --git a/packages/protocol/tests/rfq.spec.ts b/packages/protocol/tests/rfq.spec.ts index 5633721b..bef8f413 100644 --- a/packages/protocol/tests/rfq.spec.ts +++ b/packages/protocol/tests/rfq.spec.ts @@ -21,7 +21,7 @@ const rfqData: RfqData = { btcAddress: '1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa' } }, - payinAmount : '20000', + payinAmount : '200.00', claims : [''] } @@ -161,7 +161,7 @@ describe('Rfq', () => { describe('verifyClaims', () => { it(`does not throw an exception if an rfq's claims fulfill the provided offering's requirements`, async () => { const did = await DevTools.createDid() - const offering = DevTools.createOffering() + const offering = await DevTools.createOffering() const { signedCredential } = await DevTools.createCredential({ // this credential fulfills the offering's required claims type : 'SanctionsCredential', issuer : did, @@ -190,7 +190,7 @@ describe('Rfq', () => { btcAddress: '1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa' } }, - payinAmount : '20000', + payinAmount : '200.00', claims : [signedCredential] } }) @@ -229,7 +229,7 @@ describe('Rfq', () => { btcAddress: '1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa' } }, - payinAmount : '20000', + payinAmount : '200.00', claims : [signedCredential] } }) From 6bfbd090ba12bc37e4d7709b4691c422d3fb1e2b Mon Sep 17 00:00:00 2001 From: Diane Huxley Date: Fri, 5 Jan 2024 10:50:51 -0800 Subject: [PATCH 6/6] One more --- packages/http-server/src/fakes.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/http-server/src/fakes.ts b/packages/http-server/src/fakes.ts index d4e14ff8..201d4808 100644 --- a/packages/http-server/src/fakes.ts +++ b/packages/http-server/src/fakes.ts @@ -12,7 +12,7 @@ const offering = await Offering.create({ currencyCode : 'BTC', maxAmount : '999526.11' }, - rate : '0.000038', + payoutUnitsPerPayinUnit : '0.000038', payinMethods : [{ kind : 'DEBIT_CARD', requiredPaymentDetails : {