Skip to content

Commit

Permalink
Add displayDecimals to the currency object. (#36)
Browse files Browse the repository at this point in the history
* Add displayDecimals to the currency object.

This helps the sender display the receiving currency amount correctly in their UI.

Protocol change: uma-universal-money-address/protocol#7

* plurals
  • Loading branch information
jklein24 authored Nov 15, 2023
1 parent ab04fc0 commit ffa92d3
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 1 deletion.
36 changes: 35 additions & 1 deletion packages/core/src/Currency.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,46 @@
import { z } from "zod";

export const CurrencySchema = z.object({
/**
* The currency code, eg. "USD".
*/
code: z.string(),

/**
* The full currency name in plural form, eg. "US Dollars".
*/
name: z.string(),

/**
* The symbol of the currency, eg. "$".
*/
symbol: z.string(),
multiplier: z.number(), // millisatoshi per unit

/**
* Estimated millisats per smallest "unit" of this currency (eg. 1 cent in USD).
*/
multiplier: z.number(),

/**
* Minimum amount that can be sent in this currency. This is in the smallest unit of the currency
* (eg. cents for USD).
*/
minSendable: z.number(),

/**
* Maximum amount that can be sent in this currency. This is in the smallest unit of the currency
* (eg. cents for USD).
*/
maxSendable: z.number(),

/**
* Number of digits after the decimal point for display on the sender side. For example,
* in USD, by convention, there are 2 digits for cents - $5.95. in this case, `displayDecimals`
* would be 2. Note that the multiplier is still always in the smallest unit (cents). This field
* is only for display purposes. The sender should assume zero if this field is omitted, unless
* they know the proper display format of the target currency.
*/
displayDecimals: z.optional(z.number()),
});

export type Currency = z.infer<typeof CurrencySchema>;
1 change: 1 addition & 0 deletions packages/core/src/tests/uma.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -282,6 +282,7 @@ describe("uma", () => {
multiplier: 34_150,
minSendable: 1,
maxSendable: 10_000_000,
displayDecimals: 2,
},
],
receiverKycStatus: KycStatus.Verified,
Expand Down

0 comments on commit ffa92d3

Please sign in to comment.