@daimo/pay-common 0.0.1 → 1.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/chain.d.ts CHANGED
@@ -14,7 +14,7 @@ export declare const optimism: Chain;
14
14
  export declare const polygon: Chain;
15
15
  export declare const solana: Chain;
16
16
  export declare const worldchain: Chain;
17
- export declare const chainConfigs: Chain[];
17
+ export declare const supportedChains: Chain[];
18
18
  /** Given a chainId, return the chain. */
19
19
  export declare function getChainById(chainId: number): Chain;
20
20
  /** Returns the chain name for the given chainId. */
package/dist/chain.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.chainConfigs = exports.worldchain = exports.solana = exports.polygon = exports.optimism = exports.mantle = exports.linea = exports.ethereum = exports.bsc = exports.blast = exports.base = exports.arbitrum = void 0;
3
+ exports.supportedChains = exports.worldchain = exports.solana = exports.polygon = exports.optimism = exports.mantle = exports.linea = exports.ethereum = exports.bsc = exports.blast = exports.base = exports.arbitrum = void 0;
4
4
  exports.getChainById = getChainById;
5
5
  exports.getChainName = getChainName;
6
6
  exports.getChainExplorerByChainId = getChainExplorerByChainId;
@@ -61,7 +61,7 @@ exports.worldchain = {
61
61
  name: "Worldchain",
62
62
  cctpDomain: null,
63
63
  };
64
- exports.chainConfigs = [
64
+ exports.supportedChains = [
65
65
  exports.arbitrum,
66
66
  exports.base,
67
67
  exports.blast,
@@ -76,7 +76,7 @@ exports.chainConfigs = [
76
76
  ];
77
77
  /** Given a chainId, return the chain. */
78
78
  function getChainById(chainId) {
79
- const ret = exports.chainConfigs.find((c) => c.chainId === chainId);
79
+ const ret = exports.supportedChains.find((c) => c.chainId === chainId);
80
80
  if (ret == null)
81
81
  throw new Error(`Unknown chainId ${chainId}`);
82
82
  return ret;
package/dist/chain.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"chain.js","sourceRoot":"","sources":["../src/chain.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chain.js","sourceRoot":"","sources":["../src/chain.ts"],"names":[],"mappings":";;;AAuFA,oCAIC;AAGD,oCAEC;AAKD,8DA2BC;AAKD,gEAMC;AAKD,sDAMC;AAhJY,QAAA,QAAQ,GAAU;IAC7B,OAAO,EAAE,KAAK;IACd,IAAI,EAAE,UAAU;IAChB,UAAU,EAAE,CAAC;CACd,CAAC;AAEW,QAAA,IAAI,GAAU;IACzB,OAAO,EAAE,IAAI;IACb,IAAI,EAAE,MAAM;IACZ,UAAU,EAAE,CAAC;CACd,CAAC;AAEW,QAAA,KAAK,GAAU;IAC1B,OAAO,EAAE,KAAK;IACd,IAAI,EAAE,OAAO;IACb,UAAU,EAAE,IAAI;CACjB,CAAC;AAEW,QAAA,GAAG,GAAU;IACxB,OAAO,EAAE,EAAE;IACX,IAAI,EAAE,iBAAiB;IACvB,UAAU,EAAE,IAAI;CACjB,CAAC;AAEW,QAAA,QAAQ,GAAU;IAC7B,OAAO,EAAE,CAAC;IACV,IAAI,EAAE,UAAU;IAChB,UAAU,EAAE,CAAC;CACd,CAAC;AAEW,QAAA,KAAK,GAAU;IAC1B,OAAO,EAAE,KAAK;IACd,IAAI,EAAE,OAAO;IACb,UAAU,EAAE,IAAI;CACjB,CAAC;AAEW,QAAA,MAAM,GAAU;IAC3B,OAAO,EAAE,IAAI;IACb,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE,IAAI;CACjB,CAAC;AAEW,QAAA,QAAQ,GAAU;IAC7B,OAAO,EAAE,EAAE;IACX,IAAI,EAAE,UAAU;IAChB,UAAU,EAAE,CAAC;CACd,CAAC;AAEW,QAAA,OAAO,GAAU;IAC5B,OAAO,EAAE,GAAG;IACZ,IAAI,EAAE,SAAS;IACf,UAAU,EAAE,CAAC;CACd,CAAC;AAEW,QAAA,MAAM,GAAU;IAC3B,OAAO,EAAE,GAAG;IACZ,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE,CAAC;CACd,CAAC;AAEW,QAAA,UAAU,GAAU;IAC/B,OAAO,EAAE,GAAG;IACZ,IAAI,EAAE,YAAY;IAClB,UAAU,EAAE,IAAI;CACjB,CAAC;AAEW,QAAA,eAAe,GAAY;IACtC,gBAAQ;IACR,YAAI;IACJ,aAAK;IACL,WAAG;IACH,gBAAQ;IACR,aAAK;IACL,cAAM;IACN,gBAAQ;IACR,eAAO;IACP,cAAM;IACN,kBAAU;CACX,CAAC;AAEF,yCAAyC;AACzC,SAAgB,YAAY,CAAC,OAAe;IAC1C,MAAM,GAAG,GAAG,uBAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;IAC/D,IAAI,GAAG,IAAI,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,OAAO,EAAE,CAAC,CAAC;IAC/D,OAAO,GAAG,CAAC;AACb,CAAC;AAED,oDAAoD;AACpD,SAAgB,YAAY,CAAC,OAAe;IAC1C,OAAO,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,SAAgB,yBAAyB,CAAC,OAAe;IACvD,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,gBAAQ,CAAC,OAAO;YACnB,OAAO,qBAAqB,CAAC;QAC/B,KAAK,YAAI,CAAC,OAAO;YACf,OAAO,sBAAsB,CAAC;QAChC,KAAK,aAAK,CAAC,OAAO;YAChB,OAAO,sBAAsB,CAAC;QAChC,KAAK,WAAG,CAAC,OAAO;YACd,OAAO,qBAAqB,CAAC;QAC/B,KAAK,gBAAQ,CAAC,OAAO;YACnB,OAAO,sBAAsB,CAAC;QAChC,KAAK,aAAK,CAAC,OAAO;YAChB,OAAO,yBAAyB,CAAC;QACnC,KAAK,cAAM,CAAC,OAAO;YACjB,OAAO,wBAAwB,CAAC;QAClC,KAAK,gBAAQ,CAAC,OAAO;YACnB,OAAO,iCAAiC,CAAC;QAC3C,KAAK,eAAO,CAAC,OAAO;YAClB,OAAO,yBAAyB,CAAC;QACnC,KAAK,cAAM,CAAC,OAAO;YACjB,OAAO,oBAAoB,CAAC;QAC9B,KAAK,kBAAU,CAAC,OAAO;YACrB,OAAO,uBAAuB,CAAC;QACjC;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,0BAA0B,CAAC,OAAe,EAAE,OAAe;IACzE,MAAM,QAAQ,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAC;IACpD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,GAAG,QAAQ,YAAY,OAAO,EAAE,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,SAAgB,qBAAqB,CAAC,OAAe,EAAE,MAAc;IACnE,MAAM,QAAQ,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAC;IACpD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,GAAG,QAAQ,OAAO,MAAM,EAAE,CAAC;AACpC,CAAC"}
@@ -0,0 +1,405 @@
1
+ import { Address, Hex } from "viem";
2
+ import z from "zod";
3
+ import { Token } from "./token";
4
+ import { BigIntStr, SolanaPublicKey } from "./primitiveTypes";
5
+ export declare enum DaimoPayOrderStatusSource {
6
+ WAITING_PAYMENT = "waiting_payment",
7
+ PENDING_PROCESSING = "pending_processing",
8
+ START_SUBMITTED = "start_submitted",
9
+ PROCESSED = "processed"
10
+ }
11
+ export declare enum DaimoPayOrderStatusDest {
12
+ PENDING = "pending",
13
+ FAST_FINISH_SUBMITTED = "fast_finish_submitted",
14
+ FAST_FINISHED = "fast_finished",
15
+ CLAIM_SUCCESSFUL = "claimed"
16
+ }
17
+ export declare enum DaimoPayOrderMode {
18
+ SALE = "sale",// product or item sale
19
+ CHOOSE_AMOUNT = "choose_amount",// let the user specify the amount to pay
20
+ HYDRATED = "hydrated"
21
+ }
22
+ /**
23
+ * Status values:
24
+ * - `payment_unpaid` - the user has not paid yet
25
+ * - `payment_started` - the user has paid & payment is in progress. This status
26
+ * typically lasts a few seconds.
27
+ * - `payment_completed` - the final call or transfer succeeded
28
+ * - `payment_bounced` - the final call or transfer reverted. Funds were sent
29
+ * to the payment's configured refund address on the destination chain.
30
+ */
31
+ export declare enum DaimoPayIntentStatus {
32
+ UNPAID = "payment_unpaid",
33
+ STARTED = "payment_started",
34
+ COMPLETED = "payment_completed",
35
+ BOUNCED = "payment_bounced"
36
+ }
37
+ /** Order updates used by services outside orderProcessor to listen for any
38
+ * relevant or interesting changes to the order status. */
39
+ export type DaimoPayOrderUpdate = {
40
+ type: "mode";
41
+ value: DaimoPayOrderMode;
42
+ } | {
43
+ type: "source";
44
+ value: DaimoPayOrderStatusSource;
45
+ txHash: string | undefined;
46
+ } | {
47
+ type: "dest";
48
+ value: DaimoPayOrderStatusDest;
49
+ txHash: Hex;
50
+ } | {
51
+ type: "intent";
52
+ value: DaimoPayIntentStatus;
53
+ txHash: Hex;
54
+ };
55
+ export interface DaimoPayOrderItem {
56
+ name: string;
57
+ description: string;
58
+ image?: string;
59
+ }
60
+ export declare const zBridgeTokenOutOptions: z.ZodArray<z.ZodObject<{
61
+ token: z.ZodEffects<z.ZodString, `0x${string}`, string>;
62
+ amount: z.ZodEffects<z.ZodEffects<z.ZodString, `${bigint}`, string>, bigint, string>;
63
+ }, "strip", z.ZodTypeAny, {
64
+ token: `0x${string}`;
65
+ amount: bigint;
66
+ }, {
67
+ token: string;
68
+ amount: string;
69
+ }>, "many">;
70
+ export type BridgeTokenOutOptions = z.infer<typeof zBridgeTokenOutOptions>;
71
+ export declare const zDaimoPayOrderMetadata: z.ZodObject<{
72
+ style: z.ZodOptional<z.ZodObject<{
73
+ background: z.ZodOptional<z.ZodString>;
74
+ }, "strip", z.ZodTypeAny, {
75
+ background?: string | undefined;
76
+ }, {
77
+ background?: string | undefined;
78
+ }>>;
79
+ orgLogo: z.ZodOptional<z.ZodString>;
80
+ intent: z.ZodString;
81
+ items: z.ZodArray<z.ZodObject<{
82
+ name: z.ZodString;
83
+ description: z.ZodString;
84
+ image: z.ZodOptional<z.ZodString>;
85
+ price: z.ZodOptional<z.ZodString>;
86
+ priceDetails: z.ZodOptional<z.ZodString>;
87
+ }, "strip", z.ZodTypeAny, {
88
+ name: string;
89
+ description: string;
90
+ image?: string | undefined;
91
+ price?: string | undefined;
92
+ priceDetails?: string | undefined;
93
+ }, {
94
+ name: string;
95
+ description: string;
96
+ image?: string | undefined;
97
+ price?: string | undefined;
98
+ priceDetails?: string | undefined;
99
+ }>, "many">;
100
+ payer: z.ZodOptional<z.ZodObject<{
101
+ preferredChains: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
102
+ preferredTokens: z.ZodOptional<z.ZodArray<z.ZodObject<{
103
+ chain: z.ZodNumber;
104
+ address: z.ZodEffects<z.ZodEffects<z.ZodString, `0x${string}`, string>, `0x${string}`, string>;
105
+ }, "strip", z.ZodTypeAny, {
106
+ chain: number;
107
+ address: `0x${string}`;
108
+ }, {
109
+ chain: number;
110
+ address: string;
111
+ }>, "many">>;
112
+ evmChains: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
113
+ paymentOptions: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
114
+ }, "strip", z.ZodTypeAny, {
115
+ preferredChains?: number[] | undefined;
116
+ preferredTokens?: {
117
+ chain: number;
118
+ address: `0x${string}`;
119
+ }[] | undefined;
120
+ evmChains?: number[] | undefined;
121
+ paymentOptions?: string[] | undefined;
122
+ }, {
123
+ preferredChains?: number[] | undefined;
124
+ preferredTokens?: {
125
+ chain: number;
126
+ address: string;
127
+ }[] | undefined;
128
+ evmChains?: number[] | undefined;
129
+ paymentOptions?: string[] | undefined;
130
+ }>>;
131
+ }, "strip", z.ZodTypeAny, {
132
+ intent: string;
133
+ items: {
134
+ name: string;
135
+ description: string;
136
+ image?: string | undefined;
137
+ price?: string | undefined;
138
+ priceDetails?: string | undefined;
139
+ }[];
140
+ style?: {
141
+ background?: string | undefined;
142
+ } | undefined;
143
+ orgLogo?: string | undefined;
144
+ payer?: {
145
+ preferredChains?: number[] | undefined;
146
+ preferredTokens?: {
147
+ chain: number;
148
+ address: `0x${string}`;
149
+ }[] | undefined;
150
+ evmChains?: number[] | undefined;
151
+ paymentOptions?: string[] | undefined;
152
+ } | undefined;
153
+ }, {
154
+ intent: string;
155
+ items: {
156
+ name: string;
157
+ description: string;
158
+ image?: string | undefined;
159
+ price?: string | undefined;
160
+ priceDetails?: string | undefined;
161
+ }[];
162
+ style?: {
163
+ background?: string | undefined;
164
+ } | undefined;
165
+ orgLogo?: string | undefined;
166
+ payer?: {
167
+ preferredChains?: number[] | undefined;
168
+ preferredTokens?: {
169
+ chain: number;
170
+ address: string;
171
+ }[] | undefined;
172
+ evmChains?: number[] | undefined;
173
+ paymentOptions?: string[] | undefined;
174
+ } | undefined;
175
+ }>;
176
+ export type DaimoPayOrderMetadata = z.infer<typeof zDaimoPayOrderMetadata>;
177
+ /**
178
+ * The user-passed metadata must meet these criteria:
179
+ * - All keys must be strings
180
+ * - All values must be strings
181
+ * - At most 50 key-value pairs
182
+ * - Maximum of 40 characters per key
183
+ * - Maximum of 500 characters per value
184
+ */
185
+ export declare const zDaimoPayUserMetadata: z.ZodEffects<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodString>>, Record<string, string> | null, Record<string, string> | null>;
186
+ export type DaimoPayUserMetadata = z.infer<typeof zDaimoPayUserMetadata>;
187
+ export type DaimoPayDehydratedOrder = {
188
+ mode: DaimoPayOrderMode.SALE | DaimoPayOrderMode.CHOOSE_AMOUNT;
189
+ id: bigint;
190
+ destFinalCallTokenAmount: DaimoPayTokenAmount;
191
+ destFinalCall: OnChainCall;
192
+ destNonce: bigint;
193
+ redirectUri: string | null;
194
+ orgId: string | null;
195
+ createdAt: number | null;
196
+ lastUpdatedAt: number | null;
197
+ intentStatus: DaimoPayIntentStatus;
198
+ metadata: DaimoPayOrderMetadata;
199
+ externalId: string | null;
200
+ userMetadata: DaimoPayUserMetadata | null;
201
+ };
202
+ export type DaimoPayHydratedOrder = {
203
+ mode: DaimoPayOrderMode.HYDRATED;
204
+ id: bigint;
205
+ intentAddr: Address;
206
+ escrowContractAddress: Address | null;
207
+ /**
208
+ * @deprecated included for backcompat with old paykit versions. Remove once
209
+ * new paykit version is deployed.
210
+ * */
211
+ handoffAddr: Address;
212
+ bridgeTokenOutOptions: DaimoPayTokenAmount[];
213
+ selectedBridgeTokenOutAddr: Address | null;
214
+ selectedBridgeTokenOutAmount: bigint | null;
215
+ destFinalCallTokenAmount: DaimoPayTokenAmount;
216
+ destFinalCall: OnChainCall;
217
+ usdValue: number;
218
+ destRefundAddr: Address;
219
+ destNonce: bigint;
220
+ sourceFulfillerAddr: Address | SolanaPublicKey | null;
221
+ sourceTokenAmount: DaimoPayTokenAmount | null;
222
+ sourceInitiateTxHash: Hex | null;
223
+ sourceStartTxHash: Hex | null;
224
+ sourceStatus: DaimoPayOrderStatusSource;
225
+ destStatus: DaimoPayOrderStatusDest;
226
+ destFastFinishTxHash: Hex | null;
227
+ destClaimTxHash: Hex | null;
228
+ redirectUri: string | null;
229
+ orgId: string | null;
230
+ createdAt: number | null;
231
+ lastUpdatedAt: number | null;
232
+ intentStatus: DaimoPayIntentStatus;
233
+ metadata: DaimoPayOrderMetadata;
234
+ externalId: string | null;
235
+ userMetadata: DaimoPayUserMetadata | null;
236
+ };
237
+ export type DaimoPayHydratedOrderWithoutIntentAddr = Omit<DaimoPayHydratedOrder, "intentAddr" | "handoffAddr">;
238
+ export type DaimoPayOrder = DaimoPayDehydratedOrder | DaimoPayHydratedOrder;
239
+ export type DaimoPayOrderView = {
240
+ id: DaimoPayOrderID;
241
+ status: DaimoPayIntentStatus;
242
+ createdAt: string;
243
+ display: {
244
+ intent: string;
245
+ paymentValue: string;
246
+ currency: "USD";
247
+ };
248
+ source: {
249
+ payerAddress: Address | SolanaPublicKey | null;
250
+ txHash: Hex | string;
251
+ chainId: string;
252
+ amountUnits: string;
253
+ tokenSymbol: string;
254
+ tokenAddress: Address | string;
255
+ } | null;
256
+ destination: {
257
+ destinationAddress: Address;
258
+ txHash: Hex | null;
259
+ chainId: string;
260
+ amountUnits: string;
261
+ tokenSymbol: string;
262
+ tokenAddress: Address;
263
+ callData: Hex | null;
264
+ };
265
+ externalId: string | null;
266
+ metadata: DaimoPayUserMetadata | null;
267
+ };
268
+ export declare function getOrderSourceChainId(order: DaimoPayHydratedOrder): number | null;
269
+ export declare function getOrderDestChainId(order: DaimoPayOrder | DaimoPayHydratedOrderWithoutIntentAddr): number;
270
+ export declare function getDaimoPayOrderView(order: DaimoPayOrder): DaimoPayOrderView;
271
+ export type WalletPaymentOption = {
272
+ required: DaimoPayTokenAmount;
273
+ balance: DaimoPayTokenAmount;
274
+ minimumRequired: DaimoPayTokenAmount;
275
+ fees: DaimoPayTokenAmount;
276
+ disabledReason?: string;
277
+ };
278
+ export type ExternalPaymentOptionMetadata = {
279
+ id: ExternalPaymentOptions;
280
+ cta: string;
281
+ logoURI: string;
282
+ logoShape: "circle" | "squircle";
283
+ paymentToken: DaimoPayToken;
284
+ disabled: boolean;
285
+ message?: string;
286
+ minimumUsd?: number;
287
+ };
288
+ export declare enum ExternalPaymentOptions {
289
+ Daimo = "Daimo",
290
+ Coinbase = "Coinbase",
291
+ RampNetwork = "RampNetwork",
292
+ Binance = "Binance",
293
+ Solana = "Solana",
294
+ ExternalChains = "ExternalChains",
295
+ Lemon = "Lemon"
296
+ }
297
+ export type ExternalPaymentOptionData = {
298
+ url: string;
299
+ waitingMessage: string;
300
+ };
301
+ export declare enum DepositAddressPaymentOptions {
302
+ BITCOIN = "Bitcoin",
303
+ TRON_USDT = "USDT on Tron",
304
+ TON = "TON",
305
+ MONERO = "Monero",
306
+ DOGE = "Doge",
307
+ LITECOIN = "Litecoin",
308
+ ZCASH = "Zcash",
309
+ DASH = "Dash"
310
+ }
311
+ export type DepositAddressPaymentOptionMetadata = {
312
+ id: DepositAddressPaymentOptions;
313
+ logoURI: string;
314
+ };
315
+ export type DepositAddressPaymentOptionData = {
316
+ address: string;
317
+ uri: string;
318
+ amount: string;
319
+ suffix: string;
320
+ };
321
+ export interface DaimoPayToken extends Token {
322
+ token: Address | SolanaPublicKey;
323
+ usd: number;
324
+ displayDecimals: number;
325
+ fiatSymbol?: string;
326
+ }
327
+ export interface DaimoPayTokenAmount {
328
+ token: DaimoPayToken;
329
+ amount: BigIntStr;
330
+ usd: number;
331
+ }
332
+ export type OnChainCall = {
333
+ to: Address;
334
+ data: Hex;
335
+ value: bigint;
336
+ };
337
+ export declare const emptyOnChainCall: OnChainCall;
338
+ declare const zDaimoPayOrderID: z.ZodString;
339
+ export type DaimoPayOrderID = z.infer<typeof zDaimoPayOrderID>;
340
+ /**
341
+ * Read a base58-encoded id into a bigint.
342
+ */
343
+ export declare function readDaimoPayOrderID(id: string): bigint;
344
+ /**
345
+ * Write a bigint into a base58-encoded id.
346
+ */
347
+ export declare function writeDaimoPayOrderID(id: bigint): string;
348
+ export declare const zUUID: z.ZodString;
349
+ export type UUID = z.infer<typeof zUUID>;
350
+ export type PaymentStartedEvent = {
351
+ type: "payment_started";
352
+ isTestEvent?: boolean;
353
+ paymentId: DaimoPayOrderID;
354
+ chainId: number;
355
+ txHash: Hex | string | null;
356
+ payment: DaimoPayOrderView;
357
+ };
358
+ export type PaymentCompletedEvent = {
359
+ type: "payment_completed";
360
+ isTestEvent?: boolean;
361
+ paymentId: DaimoPayOrderID;
362
+ chainId: number;
363
+ txHash: Hex | string;
364
+ payment: DaimoPayOrderView;
365
+ };
366
+ export type PaymentBouncedEvent = {
367
+ type: "payment_bounced";
368
+ isTestEvent?: boolean;
369
+ paymentId: DaimoPayOrderID;
370
+ chainId: number;
371
+ txHash: Hex | string;
372
+ payment: DaimoPayOrderView;
373
+ };
374
+ export type DaimoPayEvent = PaymentStartedEvent | PaymentCompletedEvent | PaymentBouncedEvent;
375
+ export interface WebhookEndpoint {
376
+ id: UUID;
377
+ orgId: UUID;
378
+ url: string;
379
+ token: string;
380
+ createdAt: Date;
381
+ deletedAt: Date | null;
382
+ }
383
+ export declare enum WebhookEventStatus {
384
+ PENDING = "pending",// waiting to be delivered
385
+ RETRYING = "retrying",// currently in exponential backoff queue
386
+ SUCCESSFUL = "successful",// successfully delivered
387
+ FAILED = "failed"
388
+ }
389
+ export interface WebhookEvent {
390
+ id: UUID;
391
+ endpoint: WebhookEndpoint;
392
+ isTestEvent: boolean;
393
+ body: DaimoPayEvent;
394
+ status: WebhookEventStatus;
395
+ deliveries: WebhookDelivery[];
396
+ createdAt: Date;
397
+ }
398
+ export interface WebhookDelivery {
399
+ id: UUID;
400
+ eventId: UUID;
401
+ httpStatus: number | null;
402
+ body: string | null;
403
+ createdAt: Date;
404
+ }
405
+ export {};
@@ -0,0 +1,220 @@
1
+ "use strict";
2
+ // TODO: this file defines types that shouldn't be exposed to the client.
3
+ // Clean this up to only expose the types that are needed by the client.
4
+ var __importDefault = (this && this.__importDefault) || function (mod) {
5
+ return (mod && mod.__esModule) ? mod : { "default": mod };
6
+ };
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.WebhookEventStatus = exports.zUUID = exports.emptyOnChainCall = exports.DepositAddressPaymentOptions = exports.ExternalPaymentOptions = exports.zDaimoPayUserMetadata = exports.zDaimoPayOrderMetadata = exports.zBridgeTokenOutOptions = exports.DaimoPayIntentStatus = exports.DaimoPayOrderMode = exports.DaimoPayOrderStatusDest = exports.DaimoPayOrderStatusSource = void 0;
9
+ exports.getOrderSourceChainId = getOrderSourceChainId;
10
+ exports.getOrderDestChainId = getOrderDestChainId;
11
+ exports.getDaimoPayOrderView = getDaimoPayOrderView;
12
+ exports.readDaimoPayOrderID = readDaimoPayOrderID;
13
+ exports.writeDaimoPayOrderID = writeDaimoPayOrderID;
14
+ const base_1 = require("@scure/base");
15
+ const viem_1 = require("viem");
16
+ const zod_1 = __importDefault(require("zod"));
17
+ const assert_1 = require("./assert");
18
+ const primitiveTypes_1 = require("./primitiveTypes");
19
+ // lifecycle: waiting payment -> pending processing -> start submitted -> processed (onchain tx was successful)
20
+ var DaimoPayOrderStatusSource;
21
+ (function (DaimoPayOrderStatusSource) {
22
+ DaimoPayOrderStatusSource["WAITING_PAYMENT"] = "waiting_payment";
23
+ DaimoPayOrderStatusSource["PENDING_PROCESSING"] = "pending_processing";
24
+ DaimoPayOrderStatusSource["START_SUBMITTED"] = "start_submitted";
25
+ /* Start transaction receipt confirmed. */
26
+ DaimoPayOrderStatusSource["PROCESSED"] = "processed";
27
+ })(DaimoPayOrderStatusSource || (exports.DaimoPayOrderStatusSource = DaimoPayOrderStatusSource = {}));
28
+ // lifecycle: pending -> fast-finish-submitted (onchain tx submitted) -> fast-finished (onchain tx was successful) -> claimed (onchain tx was successful)
29
+ var DaimoPayOrderStatusDest;
30
+ (function (DaimoPayOrderStatusDest) {
31
+ DaimoPayOrderStatusDest["PENDING"] = "pending";
32
+ DaimoPayOrderStatusDest["FAST_FINISH_SUBMITTED"] = "fast_finish_submitted";
33
+ /* Fast finish transaction receipt confirmed. */
34
+ DaimoPayOrderStatusDest["FAST_FINISHED"] = "fast_finished";
35
+ DaimoPayOrderStatusDest["CLAIM_SUCCESSFUL"] = "claimed";
36
+ })(DaimoPayOrderStatusDest || (exports.DaimoPayOrderStatusDest = DaimoPayOrderStatusDest = {}));
37
+ var DaimoPayOrderMode;
38
+ (function (DaimoPayOrderMode) {
39
+ DaimoPayOrderMode["SALE"] = "sale";
40
+ DaimoPayOrderMode["CHOOSE_AMOUNT"] = "choose_amount";
41
+ DaimoPayOrderMode["HYDRATED"] = "hydrated";
42
+ })(DaimoPayOrderMode || (exports.DaimoPayOrderMode = DaimoPayOrderMode = {}));
43
+ /**
44
+ * Status values:
45
+ * - `payment_unpaid` - the user has not paid yet
46
+ * - `payment_started` - the user has paid & payment is in progress. This status
47
+ * typically lasts a few seconds.
48
+ * - `payment_completed` - the final call or transfer succeeded
49
+ * - `payment_bounced` - the final call or transfer reverted. Funds were sent
50
+ * to the payment's configured refund address on the destination chain.
51
+ */
52
+ var DaimoPayIntentStatus;
53
+ (function (DaimoPayIntentStatus) {
54
+ DaimoPayIntentStatus["UNPAID"] = "payment_unpaid";
55
+ DaimoPayIntentStatus["STARTED"] = "payment_started";
56
+ DaimoPayIntentStatus["COMPLETED"] = "payment_completed";
57
+ DaimoPayIntentStatus["BOUNCED"] = "payment_bounced";
58
+ })(DaimoPayIntentStatus || (exports.DaimoPayIntentStatus = DaimoPayIntentStatus = {}));
59
+ exports.zBridgeTokenOutOptions = zod_1.default.array(zod_1.default.object({
60
+ token: primitiveTypes_1.zAddress,
61
+ amount: primitiveTypes_1.zBigIntStr.transform((a) => BigInt(a)),
62
+ }));
63
+ // NOTE: be careful to modify this type only in backward-compatible ways.
64
+ // Add OPTIONAL fields, etc. Anything else requires a migration.
65
+ exports.zDaimoPayOrderMetadata = zod_1.default.object({
66
+ style: zod_1.default
67
+ .object({
68
+ background: zod_1.default.string().optional().describe("Background color."),
69
+ })
70
+ .optional()
71
+ .describe("Style of the checkout page."),
72
+ orgLogo: zod_1.default.string().optional().describe("Logo of the organization."),
73
+ intent: zod_1.default
74
+ .string()
75
+ .describe("Title verb, eg 'Preorder', 'Check out', 'Deposit'."),
76
+ items: zod_1.default
77
+ .array(zod_1.default.object({
78
+ name: zod_1.default.string(),
79
+ description: zod_1.default.string(),
80
+ image: zod_1.default.string().optional(),
81
+ price: zod_1.default.string().optional(),
82
+ priceDetails: zod_1.default.string().optional(),
83
+ }))
84
+ .describe("Details about what's being ordered, donated, deposited, etc."),
85
+ payer: zod_1.default
86
+ .object({
87
+ preferredChains: zod_1.default
88
+ .array(zod_1.default.number())
89
+ .optional()
90
+ .describe("Preferred chain IDs, in descending order. Any assets the user owns on preferred chains will appear first. Defaults to destination chain."),
91
+ preferredTokens: zod_1.default
92
+ .array(zod_1.default.object({
93
+ chain: zod_1.default.number(),
94
+ address: primitiveTypes_1.zAddress.transform((a) => (0, viem_1.getAddress)(a)),
95
+ }))
96
+ .optional()
97
+ .describe("Preferred tokens, in descending order. Any preferred assets the user owns will appear first. Defaults to destination token."),
98
+ // Filter to only allow payments on these chains. Keep this
99
+ // parameter undocumented. Only for specific customers.
100
+ evmChains: zod_1.default
101
+ .array(zod_1.default.number())
102
+ .optional()
103
+ .describe("Filter to only allow payments on these EVM chains. Defaults to all chains."),
104
+ paymentOptions: zod_1.default
105
+ .array(zod_1.default.string())
106
+ .optional()
107
+ .describe("Payment options like Coinbase, Binance, etc. Defaults to all available options."),
108
+ })
109
+ .optional()
110
+ .describe(""),
111
+ });
112
+ /**
113
+ * The user-passed metadata must meet these criteria:
114
+ * - All keys must be strings
115
+ * - All values must be strings
116
+ * - At most 50 key-value pairs
117
+ * - Maximum of 40 characters per key
118
+ * - Maximum of 500 characters per value
119
+ */
120
+ exports.zDaimoPayUserMetadata = zod_1.default
121
+ .record(zod_1.default.string().max(40, "Metadata keys cannot be longer than 40 characters"), zod_1.default.string().max(500, "Metadata values cannot be longer than 500 characters"))
122
+ .nullable()
123
+ .refine((obj) => !obj || Object.keys(obj).length <= 50, "Metadata cannot have more than 50 key-value pairs");
124
+ function getOrderSourceChainId(order) {
125
+ if (order.sourceTokenAmount == null) {
126
+ return null;
127
+ }
128
+ return order.sourceTokenAmount.token.chainId;
129
+ }
130
+ function getOrderDestChainId(order) {
131
+ return order.destFinalCallTokenAmount.token.chainId;
132
+ }
133
+ function getDaimoPayOrderView(order) {
134
+ return {
135
+ id: writeDaimoPayOrderID(order.id),
136
+ status: order.intentStatus,
137
+ createdAt: (0, assert_1.assertNotNull)(order.createdAt, `createdAt is null for order with id: ${order.id}`).toString(),
138
+ display: {
139
+ intent: order.metadata.intent,
140
+ // Show 2 decimal places for USD
141
+ paymentValue: order.destFinalCallTokenAmount.usd.toFixed(2),
142
+ currency: "USD",
143
+ },
144
+ source: order.mode === DaimoPayOrderMode.HYDRATED &&
145
+ order.sourceTokenAmount != null
146
+ ? {
147
+ payerAddress: order.sourceFulfillerAddr,
148
+ txHash: (0, assert_1.assertNotNull)(order.sourceInitiateTxHash, `sourceInitiateTxHash is null for order with source token: ${order.id}`),
149
+ chainId: (0, assert_1.assertNotNull)(getOrderSourceChainId(order), `source chain id is null for order with source token: ${order.id}`).toString(),
150
+ amountUnits: (0, viem_1.formatUnits)(BigInt(order.sourceTokenAmount.amount), order.sourceTokenAmount.token.decimals),
151
+ tokenSymbol: order.sourceTokenAmount.token.symbol,
152
+ tokenAddress: order.sourceTokenAmount.token.token,
153
+ }
154
+ : null,
155
+ destination: {
156
+ destinationAddress: order.destFinalCall.to,
157
+ txHash: order.mode === DaimoPayOrderMode.HYDRATED
158
+ ? (order.destFastFinishTxHash ?? order.destClaimTxHash)
159
+ : null,
160
+ chainId: getOrderDestChainId(order).toString(),
161
+ amountUnits: (0, viem_1.formatUnits)(BigInt(order.destFinalCallTokenAmount.amount), order.destFinalCallTokenAmount.token.decimals),
162
+ tokenSymbol: order.destFinalCallTokenAmount.token.symbol,
163
+ tokenAddress: (0, viem_1.getAddress)(order.destFinalCallTokenAmount.token.token),
164
+ callData: order.destFinalCall.data,
165
+ },
166
+ externalId: order.externalId,
167
+ metadata: order.userMetadata,
168
+ };
169
+ }
170
+ var ExternalPaymentOptions;
171
+ (function (ExternalPaymentOptions) {
172
+ ExternalPaymentOptions["Daimo"] = "Daimo";
173
+ ExternalPaymentOptions["Coinbase"] = "Coinbase";
174
+ ExternalPaymentOptions["RampNetwork"] = "RampNetwork";
175
+ ExternalPaymentOptions["Binance"] = "Binance";
176
+ ExternalPaymentOptions["Solana"] = "Solana";
177
+ // ChangeNow chains. Bitcoin, Litecoin, Doge, Tron, etc.
178
+ ExternalPaymentOptions["ExternalChains"] = "ExternalChains";
179
+ ExternalPaymentOptions["Lemon"] = "Lemon";
180
+ })(ExternalPaymentOptions || (exports.ExternalPaymentOptions = ExternalPaymentOptions = {}));
181
+ var DepositAddressPaymentOptions;
182
+ (function (DepositAddressPaymentOptions) {
183
+ DepositAddressPaymentOptions["BITCOIN"] = "Bitcoin";
184
+ DepositAddressPaymentOptions["TRON_USDT"] = "USDT on Tron";
185
+ DepositAddressPaymentOptions["TON"] = "TON";
186
+ DepositAddressPaymentOptions["MONERO"] = "Monero";
187
+ DepositAddressPaymentOptions["DOGE"] = "Doge";
188
+ DepositAddressPaymentOptions["LITECOIN"] = "Litecoin";
189
+ DepositAddressPaymentOptions["ZCASH"] = "Zcash";
190
+ DepositAddressPaymentOptions["DASH"] = "Dash";
191
+ })(DepositAddressPaymentOptions || (exports.DepositAddressPaymentOptions = DepositAddressPaymentOptions = {}));
192
+ exports.emptyOnChainCall = {
193
+ to: viem_1.zeroAddress,
194
+ data: "0x",
195
+ value: 0n,
196
+ };
197
+ // base58 encoded bigint
198
+ const zDaimoPayOrderID = zod_1.default.string().regex(/^[1-9A-HJ-NP-Za-km-z]+$/);
199
+ /**
200
+ * Read a base58-encoded id into a bigint.
201
+ */
202
+ function readDaimoPayOrderID(id) {
203
+ return (0, viem_1.bytesToBigInt)(base_1.base58.decode(id));
204
+ }
205
+ /**
206
+ * Write a bigint into a base58-encoded id.
207
+ */
208
+ function writeDaimoPayOrderID(id) {
209
+ return base_1.base58.encode((0, viem_1.numberToBytes)(id));
210
+ }
211
+ exports.zUUID = zod_1.default.string().uuid();
212
+ // Lifecycle: Pending (just created) -> (if failing) Retrying (exponential backoff) -> Successful or Failed
213
+ var WebhookEventStatus;
214
+ (function (WebhookEventStatus) {
215
+ WebhookEventStatus["PENDING"] = "pending";
216
+ WebhookEventStatus["RETRYING"] = "retrying";
217
+ WebhookEventStatus["SUCCESSFUL"] = "successful";
218
+ WebhookEventStatus["FAILED"] = "failed";
219
+ })(WebhookEventStatus || (exports.WebhookEventStatus = WebhookEventStatus = {}));
220
+ //# sourceMappingURL=daimoPay.js.map