@usdctofiat/offramp 4.0.0 → 4.2.0

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/index.d.cts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { WalletClient } from 'viem';
2
- import { h as OfframpParams, p as OnProgress, l as OfframpResult, e as OfframpCreateOptions, k as OfframpQuoteInput, j as OfframpQuote, o as OfframpVaultStatus, t as PlatformEntry, c as CurrencyEntry, D as DepositInfo } from './errors-DYCRKcnY.cjs';
3
- export { C as CURRENCIES, a as CompletePeerExtensionRegistrationInput, b as CompletePeerExtensionRegistrationResult, d as DepositStatus, M as MakersCreateError, O as OFFRAMP_ERROR_CODES, f as OfframpError, g as OfframpErrorCode, i as OfframpProgress, m as OfframpState, n as OfframpStep, P as PLATFORMS, q as PLATFORM_LIMITS, r as PayeeDepositData, s as PeerExtensionRegistrationInfo, u as PlatformKey, v as PlatformLimits, w as PlatformTier, x as completePeerExtensionRegistration, y as getPeerExtensionRegistrationAuthParams, z as getPeerExtensionRegistrationInfo, A as getPlatformLimits, B as isPeerExtensionRegistrationError, E as isValidIBAN, F as normalizePaypalMeUsername } from './errors-DYCRKcnY.cjs';
2
+ import { h as OfframpParams, p as OnProgress, l as OfframpResult, e as OfframpCreateOptions, k as OfframpQuoteInput, j as OfframpQuote, o as OfframpVaultStatus, t as PlatformEntry, c as CurrencyEntry, D as DepositInfo } from './errors-Dva4Wriq.cjs';
3
+ export { C as CURRENCIES, a as CompletePeerExtensionRegistrationInput, b as CompletePeerExtensionRegistrationResult, d as DepositStatus, M as MakersCreateError, O as OFFRAMP_ERROR_CODES, f as OfframpError, g as OfframpErrorCode, i as OfframpProgress, m as OfframpState, n as OfframpStep, P as PLATFORMS, q as PLATFORM_LIMITS, r as PayeeDepositData, s as PeerExtensionRegistrationInfo, u as PlatformKey, v as PlatformLimits, w as PlatformTier, x as completePeerExtensionRegistration, y as getPeerExtensionRegistrationAuthParams, z as getPeerExtensionRegistrationInfo, A as getPlatformLimits, B as isPeerExtensionRegistrationError, E as isValidIBAN, F as normalizePaypalMeUsername } from './errors-Dva4Wriq.cjs';
4
4
  import { PeerConnectionStatus, PeerAuthenticateParams, PeerMetadataMessageCallback, SellerCredentialBundle } from '@zkp2p/sdk';
5
5
  export { PEER_EXTENSION_CHROME_URL, PeerAuthenticateParams, PeerBuyerTeePaymentCapture, PeerBuyerTeePaymentParams, PeerConnectionStatus, PeerMetadataCaptureMode, PeerMetadataMessage, PeerMetadataMessageCallback, PeerMetadataProviderConfig, PeerMetadataRow, PeerSarCredentialCapture } from '@zkp2p/sdk';
6
6
 
@@ -64,7 +64,19 @@ type PeerExtensionWindow = Window & {
64
64
  };
65
65
  type PeerExtensionSdkOptions = {
66
66
  window?: PeerExtensionWindow;
67
+ /**
68
+ * Chrome Web Store listing opened by `openInstallPage()`. Defaults to the
69
+ * USDCtoFiat Verify listing; pass `PEER_EXTENSION_CHROME_URL` (re-exported
70
+ * from `@zkp2p/sdk`) to target the legacy PeerAuth listing, or any custom
71
+ * branded-extension listing.
72
+ */
73
+ installUrl?: string;
67
74
  };
75
+ /**
76
+ * Default install target: the USDCtoFiat Verify extension (branded fork of
77
+ * PeerAuth implementing the same window.peer interface).
78
+ */
79
+ declare const DEFAULT_EXTENSION_INSTALL_URL = "https://chromewebstore.google.com/detail/usdctofiat-verify/lfkmdfifolhcfjmhklmckigfngghmpdf";
68
80
  type PeerExtensionSdk = {
69
81
  requestConnection(): Promise<boolean>;
70
82
  checkConnectionStatus(): Promise<PeerConnectionStatus>;
@@ -134,6 +146,10 @@ declare function delegate(walletClient: WalletClient, depositId: string, escrowA
134
146
  declare function undelegate(walletClient: WalletClient, depositId: string, escrowAddress?: string): Promise<string>;
135
147
 
136
148
  declare const ESCROW_ADDRESS: `0x${string}`;
149
+ declare const DELEGATE_RATE_MANAGER_ID: `0x${string}`;
150
+ declare const RATE_MANAGER_REGISTRY_ADDRESS: `0x${string}`;
151
+ declare const DELEGATE_MANAGER_FEE_BPS = 10;
152
+ declare const REFERRER = "galleonlabs";
137
153
 
138
154
  interface EnableOtcResult {
139
155
  depositId: string;
@@ -171,4 +187,74 @@ declare function disableOtc(walletClient: WalletClient, depositId: string, escro
171
187
  */
172
188
  declare function getOtcLink(depositId: string, escrowAddress?: string): string;
173
189
 
174
- export { CurrencyEntry, DepositInfo, ESCROW_ADDRESS, type EnableOtcResult, Offramp, OfframpCreateOptions, OfframpParams, OfframpQuote, OfframpQuoteInput, OfframpResult, OfframpVaultStatus, OnProgress, type PeerExtensionApi, type PeerExtensionSdk, type PeerExtensionSdkOptions, type PeerExtensionState, type PeerExtensionWindow, type PeerSarCredentialBundle, PlatformEntry, close, createOfframp, createPeerExtensionSdk, createTelemetryContext, delegate, deposits, disableOtc, emitEvent, enableOtc, getOtcLink, getPeerExtensionState, isPeerExtensionAvailable, isPeerExtensionMetadataBridgeAvailable, offramp, openPeerExtensionInstallPage, peerExtensionSdk, sanitizeAttributionId, sendTelemetryEvent, undelegate };
190
+ type OfframpIntegratorProfile = "app" | "bot" | "agent" | "private-otc" | "webhooks" | "peerlytics";
191
+ interface OfframpResourceLink {
192
+ label: string;
193
+ href: string;
194
+ description: string;
195
+ }
196
+ interface OfframpIntegrationStep {
197
+ title: string;
198
+ detail: string;
199
+ }
200
+ interface OfframpIntegrationPlaybook {
201
+ profile: OfframpIntegratorProfile;
202
+ title: string;
203
+ summary: string;
204
+ steps: OfframpIntegrationStep[];
205
+ resources: OfframpResourceLink[];
206
+ }
207
+ interface OfframpDeveloperResources {
208
+ packageName: "@usdctofiat/offramp";
209
+ sdkVersion: string;
210
+ chain: "base-mainnet";
211
+ chainId: 8453;
212
+ referrer: typeof REFERRER;
213
+ delegation: {
214
+ required: true;
215
+ rateManagerId: typeof DELEGATE_RATE_MANAGER_ID;
216
+ rateManagerAddress: typeof RATE_MANAGER_REGISTRY_ADDRESS;
217
+ feeRateBps: typeof DELEGATE_MANAGER_FEE_BPS;
218
+ escrow: typeof ESCROW_ADDRESS;
219
+ };
220
+ links: {
221
+ developerPortal: string;
222
+ sdkGuide: string;
223
+ appGuide: string;
224
+ botGuide: string;
225
+ agentGuide: string;
226
+ webhooksGuide: string;
227
+ privateOtcGuide: string;
228
+ peerlyticsGuide: string;
229
+ agentSkill: string;
230
+ shortMachineReference: string;
231
+ fullMachineReference: string;
232
+ starters: string;
233
+ peerlyticsDevelopers: string;
234
+ peerlyticsPricing: string;
235
+ npm: string;
236
+ };
237
+ playbooks: OfframpIntegrationPlaybook[];
238
+ }
239
+ declare const OFFRAMP_RESOURCE_LINKS: {
240
+ readonly developerPortal: "https://usdctofiat.xyz/developers/";
241
+ readonly sdkGuide: "https://usdctofiat.xyz/developers/offramp-sdk/";
242
+ readonly appGuide: "https://usdctofiat.xyz/developers/apps/";
243
+ readonly botGuide: "https://usdctofiat.xyz/developers/bots/";
244
+ readonly agentGuide: "https://usdctofiat.xyz/developers/agents/";
245
+ readonly webhooksGuide: "https://usdctofiat.xyz/developers/webhooks/";
246
+ readonly privateOtcGuide: "https://usdctofiat.xyz/developers/private-otc/";
247
+ readonly peerlyticsGuide: "https://usdctofiat.xyz/developers/peerlytics/";
248
+ readonly agentSkill: "https://usdctofiat.xyz/skills/usdctofiat.md";
249
+ readonly shortMachineReference: "https://usdctofiat.xyz/llms.txt";
250
+ readonly fullMachineReference: "https://usdctofiat.xyz/llms-full.txt";
251
+ readonly starters: "https://github.com/ADWilkinson/usdctofiat-peerlytics-starters";
252
+ readonly peerlyticsDevelopers: "https://peerlytics.xyz/developers";
253
+ readonly peerlyticsPricing: "https://peerlytics.xyz/pricing";
254
+ readonly npm: "https://www.npmjs.com/package/@usdctofiat/offramp";
255
+ };
256
+ declare const OFFRAMP_INTEGRATION_PLAYBOOKS: OfframpIntegrationPlaybook[];
257
+ declare const OFFRAMP_DEVELOPER_RESOURCES: OfframpDeveloperResources;
258
+ declare function getOfframpDeveloperResources(profile?: OfframpIntegratorProfile): OfframpDeveloperResources | OfframpIntegrationPlaybook;
259
+
260
+ export { CurrencyEntry, DEFAULT_EXTENSION_INSTALL_URL, DepositInfo, ESCROW_ADDRESS, type EnableOtcResult, OFFRAMP_DEVELOPER_RESOURCES, OFFRAMP_INTEGRATION_PLAYBOOKS, OFFRAMP_RESOURCE_LINKS, Offramp, OfframpCreateOptions, type OfframpDeveloperResources, type OfframpIntegrationPlaybook, type OfframpIntegrationStep, type OfframpIntegratorProfile, OfframpParams, OfframpQuote, OfframpQuoteInput, type OfframpResourceLink, OfframpResult, OfframpVaultStatus, OnProgress, type PeerExtensionApi, type PeerExtensionSdk, type PeerExtensionSdkOptions, type PeerExtensionState, type PeerExtensionWindow, type PeerSarCredentialBundle, PlatformEntry, close, createOfframp, createPeerExtensionSdk, createTelemetryContext, delegate, deposits, disableOtc, emitEvent, enableOtc, getOfframpDeveloperResources, getOtcLink, getPeerExtensionState, isPeerExtensionAvailable, isPeerExtensionMetadataBridgeAvailable, offramp, openPeerExtensionInstallPage, peerExtensionSdk, sanitizeAttributionId, sendTelemetryEvent, undelegate };
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { WalletClient } from 'viem';
2
- import { h as OfframpParams, p as OnProgress, l as OfframpResult, e as OfframpCreateOptions, k as OfframpQuoteInput, j as OfframpQuote, o as OfframpVaultStatus, t as PlatformEntry, c as CurrencyEntry, D as DepositInfo } from './errors-DYCRKcnY.js';
3
- export { C as CURRENCIES, a as CompletePeerExtensionRegistrationInput, b as CompletePeerExtensionRegistrationResult, d as DepositStatus, M as MakersCreateError, O as OFFRAMP_ERROR_CODES, f as OfframpError, g as OfframpErrorCode, i as OfframpProgress, m as OfframpState, n as OfframpStep, P as PLATFORMS, q as PLATFORM_LIMITS, r as PayeeDepositData, s as PeerExtensionRegistrationInfo, u as PlatformKey, v as PlatformLimits, w as PlatformTier, x as completePeerExtensionRegistration, y as getPeerExtensionRegistrationAuthParams, z as getPeerExtensionRegistrationInfo, A as getPlatformLimits, B as isPeerExtensionRegistrationError, E as isValidIBAN, F as normalizePaypalMeUsername } from './errors-DYCRKcnY.js';
2
+ import { h as OfframpParams, p as OnProgress, l as OfframpResult, e as OfframpCreateOptions, k as OfframpQuoteInput, j as OfframpQuote, o as OfframpVaultStatus, t as PlatformEntry, c as CurrencyEntry, D as DepositInfo } from './errors-Dva4Wriq.js';
3
+ export { C as CURRENCIES, a as CompletePeerExtensionRegistrationInput, b as CompletePeerExtensionRegistrationResult, d as DepositStatus, M as MakersCreateError, O as OFFRAMP_ERROR_CODES, f as OfframpError, g as OfframpErrorCode, i as OfframpProgress, m as OfframpState, n as OfframpStep, P as PLATFORMS, q as PLATFORM_LIMITS, r as PayeeDepositData, s as PeerExtensionRegistrationInfo, u as PlatformKey, v as PlatformLimits, w as PlatformTier, x as completePeerExtensionRegistration, y as getPeerExtensionRegistrationAuthParams, z as getPeerExtensionRegistrationInfo, A as getPlatformLimits, B as isPeerExtensionRegistrationError, E as isValidIBAN, F as normalizePaypalMeUsername } from './errors-Dva4Wriq.js';
4
4
  import { PeerConnectionStatus, PeerAuthenticateParams, PeerMetadataMessageCallback, SellerCredentialBundle } from '@zkp2p/sdk';
5
5
  export { PEER_EXTENSION_CHROME_URL, PeerAuthenticateParams, PeerBuyerTeePaymentCapture, PeerBuyerTeePaymentParams, PeerConnectionStatus, PeerMetadataCaptureMode, PeerMetadataMessage, PeerMetadataMessageCallback, PeerMetadataProviderConfig, PeerMetadataRow, PeerSarCredentialCapture } from '@zkp2p/sdk';
6
6
 
@@ -64,7 +64,19 @@ type PeerExtensionWindow = Window & {
64
64
  };
65
65
  type PeerExtensionSdkOptions = {
66
66
  window?: PeerExtensionWindow;
67
+ /**
68
+ * Chrome Web Store listing opened by `openInstallPage()`. Defaults to the
69
+ * USDCtoFiat Verify listing; pass `PEER_EXTENSION_CHROME_URL` (re-exported
70
+ * from `@zkp2p/sdk`) to target the legacy PeerAuth listing, or any custom
71
+ * branded-extension listing.
72
+ */
73
+ installUrl?: string;
67
74
  };
75
+ /**
76
+ * Default install target: the USDCtoFiat Verify extension (branded fork of
77
+ * PeerAuth implementing the same window.peer interface).
78
+ */
79
+ declare const DEFAULT_EXTENSION_INSTALL_URL = "https://chromewebstore.google.com/detail/usdctofiat-verify/lfkmdfifolhcfjmhklmckigfngghmpdf";
68
80
  type PeerExtensionSdk = {
69
81
  requestConnection(): Promise<boolean>;
70
82
  checkConnectionStatus(): Promise<PeerConnectionStatus>;
@@ -134,6 +146,10 @@ declare function delegate(walletClient: WalletClient, depositId: string, escrowA
134
146
  declare function undelegate(walletClient: WalletClient, depositId: string, escrowAddress?: string): Promise<string>;
135
147
 
136
148
  declare const ESCROW_ADDRESS: `0x${string}`;
149
+ declare const DELEGATE_RATE_MANAGER_ID: `0x${string}`;
150
+ declare const RATE_MANAGER_REGISTRY_ADDRESS: `0x${string}`;
151
+ declare const DELEGATE_MANAGER_FEE_BPS = 10;
152
+ declare const REFERRER = "galleonlabs";
137
153
 
138
154
  interface EnableOtcResult {
139
155
  depositId: string;
@@ -171,4 +187,74 @@ declare function disableOtc(walletClient: WalletClient, depositId: string, escro
171
187
  */
172
188
  declare function getOtcLink(depositId: string, escrowAddress?: string): string;
173
189
 
174
- export { CurrencyEntry, DepositInfo, ESCROW_ADDRESS, type EnableOtcResult, Offramp, OfframpCreateOptions, OfframpParams, OfframpQuote, OfframpQuoteInput, OfframpResult, OfframpVaultStatus, OnProgress, type PeerExtensionApi, type PeerExtensionSdk, type PeerExtensionSdkOptions, type PeerExtensionState, type PeerExtensionWindow, type PeerSarCredentialBundle, PlatformEntry, close, createOfframp, createPeerExtensionSdk, createTelemetryContext, delegate, deposits, disableOtc, emitEvent, enableOtc, getOtcLink, getPeerExtensionState, isPeerExtensionAvailable, isPeerExtensionMetadataBridgeAvailable, offramp, openPeerExtensionInstallPage, peerExtensionSdk, sanitizeAttributionId, sendTelemetryEvent, undelegate };
190
+ type OfframpIntegratorProfile = "app" | "bot" | "agent" | "private-otc" | "webhooks" | "peerlytics";
191
+ interface OfframpResourceLink {
192
+ label: string;
193
+ href: string;
194
+ description: string;
195
+ }
196
+ interface OfframpIntegrationStep {
197
+ title: string;
198
+ detail: string;
199
+ }
200
+ interface OfframpIntegrationPlaybook {
201
+ profile: OfframpIntegratorProfile;
202
+ title: string;
203
+ summary: string;
204
+ steps: OfframpIntegrationStep[];
205
+ resources: OfframpResourceLink[];
206
+ }
207
+ interface OfframpDeveloperResources {
208
+ packageName: "@usdctofiat/offramp";
209
+ sdkVersion: string;
210
+ chain: "base-mainnet";
211
+ chainId: 8453;
212
+ referrer: typeof REFERRER;
213
+ delegation: {
214
+ required: true;
215
+ rateManagerId: typeof DELEGATE_RATE_MANAGER_ID;
216
+ rateManagerAddress: typeof RATE_MANAGER_REGISTRY_ADDRESS;
217
+ feeRateBps: typeof DELEGATE_MANAGER_FEE_BPS;
218
+ escrow: typeof ESCROW_ADDRESS;
219
+ };
220
+ links: {
221
+ developerPortal: string;
222
+ sdkGuide: string;
223
+ appGuide: string;
224
+ botGuide: string;
225
+ agentGuide: string;
226
+ webhooksGuide: string;
227
+ privateOtcGuide: string;
228
+ peerlyticsGuide: string;
229
+ agentSkill: string;
230
+ shortMachineReference: string;
231
+ fullMachineReference: string;
232
+ starters: string;
233
+ peerlyticsDevelopers: string;
234
+ peerlyticsPricing: string;
235
+ npm: string;
236
+ };
237
+ playbooks: OfframpIntegrationPlaybook[];
238
+ }
239
+ declare const OFFRAMP_RESOURCE_LINKS: {
240
+ readonly developerPortal: "https://usdctofiat.xyz/developers/";
241
+ readonly sdkGuide: "https://usdctofiat.xyz/developers/offramp-sdk/";
242
+ readonly appGuide: "https://usdctofiat.xyz/developers/apps/";
243
+ readonly botGuide: "https://usdctofiat.xyz/developers/bots/";
244
+ readonly agentGuide: "https://usdctofiat.xyz/developers/agents/";
245
+ readonly webhooksGuide: "https://usdctofiat.xyz/developers/webhooks/";
246
+ readonly privateOtcGuide: "https://usdctofiat.xyz/developers/private-otc/";
247
+ readonly peerlyticsGuide: "https://usdctofiat.xyz/developers/peerlytics/";
248
+ readonly agentSkill: "https://usdctofiat.xyz/skills/usdctofiat.md";
249
+ readonly shortMachineReference: "https://usdctofiat.xyz/llms.txt";
250
+ readonly fullMachineReference: "https://usdctofiat.xyz/llms-full.txt";
251
+ readonly starters: "https://github.com/ADWilkinson/usdctofiat-peerlytics-starters";
252
+ readonly peerlyticsDevelopers: "https://peerlytics.xyz/developers";
253
+ readonly peerlyticsPricing: "https://peerlytics.xyz/pricing";
254
+ readonly npm: "https://www.npmjs.com/package/@usdctofiat/offramp";
255
+ };
256
+ declare const OFFRAMP_INTEGRATION_PLAYBOOKS: OfframpIntegrationPlaybook[];
257
+ declare const OFFRAMP_DEVELOPER_RESOURCES: OfframpDeveloperResources;
258
+ declare function getOfframpDeveloperResources(profile?: OfframpIntegratorProfile): OfframpDeveloperResources | OfframpIntegrationPlaybook;
259
+
260
+ export { CurrencyEntry, DEFAULT_EXTENSION_INSTALL_URL, DepositInfo, ESCROW_ADDRESS, type EnableOtcResult, OFFRAMP_DEVELOPER_RESOURCES, OFFRAMP_INTEGRATION_PLAYBOOKS, OFFRAMP_RESOURCE_LINKS, Offramp, OfframpCreateOptions, type OfframpDeveloperResources, type OfframpIntegrationPlaybook, type OfframpIntegrationStep, type OfframpIntegratorProfile, OfframpParams, OfframpQuote, OfframpQuoteInput, type OfframpResourceLink, OfframpResult, OfframpVaultStatus, OnProgress, type PeerExtensionApi, type PeerExtensionSdk, type PeerExtensionSdkOptions, type PeerExtensionState, type PeerExtensionWindow, type PeerSarCredentialBundle, PlatformEntry, close, createOfframp, createPeerExtensionSdk, createTelemetryContext, delegate, deposits, disableOtc, emitEvent, enableOtc, getOfframpDeveloperResources, getOtcLink, getPeerExtensionState, isPeerExtensionAvailable, isPeerExtensionMetadataBridgeAvailable, offramp, openPeerExtensionInstallPage, peerExtensionSdk, sanitizeAttributionId, sendTelemetryEvent, undelegate };
package/dist/index.js CHANGED
@@ -1,5 +1,8 @@
1
1
  import {
2
2
  CURRENCIES,
3
+ DEFAULT_EXTENSION_INSTALL_URL,
4
+ DELEGATE_MANAGER_FEE_BPS,
5
+ DELEGATE_RATE_MANAGER_ID,
3
6
  ESCROW_ADDRESS,
4
7
  MakersCreateError,
5
8
  Offramp,
@@ -7,6 +10,9 @@ import {
7
10
  PEER_EXTENSION_CHROME_URL,
8
11
  PLATFORMS,
9
12
  PLATFORM_LIMITS,
13
+ RATE_MANAGER_REGISTRY_ADDRESS,
14
+ REFERRER,
15
+ SDK_VERSION,
10
16
  close,
11
17
  completePeerExtensionRegistration,
12
18
  createOfframp,
@@ -33,7 +39,7 @@ import {
33
39
  sanitizeAttributionId,
34
40
  sendTelemetryEvent,
35
41
  undelegate
36
- } from "./chunk-QMO7HTBZ.js";
42
+ } from "./chunk-COG2VN74.js";
37
43
 
38
44
  // src/types.ts
39
45
  var OFFRAMP_ERROR_CODES = {
@@ -55,11 +61,294 @@ var OFFRAMP_ERROR_CODES = {
55
61
  USER_CANCELLED: "USER_CANCELLED",
56
62
  UNSUPPORTED: "UNSUPPORTED"
57
63
  };
64
+
65
+ // src/resources.ts
66
+ var OFFRAMP_RESOURCE_LINKS = {
67
+ developerPortal: "https://usdctofiat.xyz/developers/",
68
+ sdkGuide: "https://usdctofiat.xyz/developers/offramp-sdk/",
69
+ appGuide: "https://usdctofiat.xyz/developers/apps/",
70
+ botGuide: "https://usdctofiat.xyz/developers/bots/",
71
+ agentGuide: "https://usdctofiat.xyz/developers/agents/",
72
+ webhooksGuide: "https://usdctofiat.xyz/developers/webhooks/",
73
+ privateOtcGuide: "https://usdctofiat.xyz/developers/private-otc/",
74
+ peerlyticsGuide: "https://usdctofiat.xyz/developers/peerlytics/",
75
+ agentSkill: "https://usdctofiat.xyz/skills/usdctofiat.md",
76
+ shortMachineReference: "https://usdctofiat.xyz/llms.txt",
77
+ fullMachineReference: "https://usdctofiat.xyz/llms-full.txt",
78
+ starters: "https://github.com/ADWilkinson/usdctofiat-peerlytics-starters",
79
+ peerlyticsDevelopers: "https://peerlytics.xyz/developers",
80
+ peerlyticsPricing: "https://peerlytics.xyz/pricing",
81
+ npm: "https://www.npmjs.com/package/@usdctofiat/offramp"
82
+ };
83
+ var sharedResources = [
84
+ {
85
+ label: "Developer portal",
86
+ href: OFFRAMP_RESOURCE_LINKS.developerPortal,
87
+ description: "Human-readable hub for SDK, webhooks, OTC, bots, agents, and Peerlytics."
88
+ },
89
+ {
90
+ label: "Starter templates",
91
+ href: OFFRAMP_RESOURCE_LINKS.starters,
92
+ description: "Next.js, Vite, Telegram-bot, scripts, and HMAC webhook receivers."
93
+ },
94
+ {
95
+ label: "Agent skill",
96
+ href: OFFRAMP_RESOURCE_LINKS.agentSkill,
97
+ description: "Drop-in skill file for coding agents integrating the off-ramp."
98
+ }
99
+ ];
100
+ var OFFRAMP_INTEGRATION_PLAYBOOKS = [
101
+ {
102
+ profile: "app",
103
+ title: "Wallet app",
104
+ summary: "Add a sell-USDC button to a user-facing web app.",
105
+ steps: [
106
+ {
107
+ title: "Collect route inputs",
108
+ detail: "Ask for amount, platform, currency, and the platform-specific payout identifier."
109
+ },
110
+ {
111
+ title: "Call useOfframp or createOfframp",
112
+ detail: "Pass the user's viem WalletClient so the user signs approval, deposit, and delegation."
113
+ },
114
+ {
115
+ title: "Handle PayPal and Wise registration",
116
+ detail: "Catch EXTENSION_REGISTRATION_REQUIRED and drive usePeerExtensionRegistration."
117
+ },
118
+ {
119
+ title: "Reconcile state",
120
+ detail: "Use deposits(address) and webhooks rather than assuming the browser stayed open."
121
+ }
122
+ ],
123
+ resources: [
124
+ ...sharedResources,
125
+ {
126
+ label: "App integration guide",
127
+ href: OFFRAMP_RESOURCE_LINKS.appGuide,
128
+ description: "User-facing app flow, React hooks, and wallet-state guidance."
129
+ },
130
+ {
131
+ label: "SDK guide",
132
+ href: OFFRAMP_RESOURCE_LINKS.sdkGuide,
133
+ description: "Core SDK exports, resumability, errors, and examples."
134
+ }
135
+ ]
136
+ },
137
+ {
138
+ profile: "bot",
139
+ title: "Bot or backend worker",
140
+ summary: "Create delegated deposits from a server wallet or automation wallet.",
141
+ steps: [
142
+ {
143
+ title: "Own duplicate prevention",
144
+ detail: "Before creating, call deposits(address) and reuse open inventory when possible."
145
+ },
146
+ {
147
+ title: "Pass stable attribution",
148
+ detail: "Use integratorId and referralId so telemetry can separate automated flows."
149
+ },
150
+ {
151
+ title: "Use OTC when a buyer is known",
152
+ detail: "Pass otcTaker to avoid exposing known-counterparty liquidity publicly."
153
+ },
154
+ {
155
+ title: "Subscribe to lifecycle state",
156
+ detail: "Register HMAC webhooks so fills and closes survive process restarts."
157
+ }
158
+ ],
159
+ resources: [
160
+ ...sharedResources,
161
+ {
162
+ label: "Bot guide",
163
+ href: OFFRAMP_RESOURCE_LINKS.botGuide,
164
+ description: "Server-wallet, retry, idempotency, and OTC patterns."
165
+ },
166
+ {
167
+ label: "Webhooks guide",
168
+ href: OFFRAMP_RESOURCE_LINKS.webhooksGuide,
169
+ description: "HMAC verification and lifecycle event names."
170
+ }
171
+ ]
172
+ },
173
+ {
174
+ profile: "agent",
175
+ title: "Coding agent",
176
+ summary: "Give an agent enough canonical context to build without guessing protocol details.",
177
+ steps: [
178
+ {
179
+ title: "Load the skill",
180
+ detail: "Point the agent at /skills/usdctofiat.md before it writes integration code."
181
+ },
182
+ {
183
+ title: "Use the machine references",
184
+ detail: "Feed llms.txt or llms-full.txt when the agent needs routes, contracts, and rules."
185
+ },
186
+ {
187
+ title: "Scaffold first",
188
+ detail: "Use create-offramp-app or starters before asking the agent to invent wiring."
189
+ },
190
+ {
191
+ title: "Verify delegation",
192
+ detail: "Check getVaultStatus() and the returned deposit state; SDK deposits must delegate."
193
+ }
194
+ ],
195
+ resources: [
196
+ ...sharedResources,
197
+ {
198
+ label: "Agent guide",
199
+ href: OFFRAMP_RESOURCE_LINKS.agentGuide,
200
+ description: "Context-pack and prompt sequence for AI-assisted integration."
201
+ },
202
+ {
203
+ label: "Full machine reference",
204
+ href: OFFRAMP_RESOURCE_LINKS.fullMachineReference,
205
+ description: "Canonical routes, contracts, fees, and extractable answers."
206
+ }
207
+ ]
208
+ },
209
+ {
210
+ profile: "private-otc",
211
+ title: "Private OTC flow",
212
+ summary: "Restrict a delegated deposit to one approved taker wallet.",
213
+ steps: [
214
+ {
215
+ title: "Create with otcTaker",
216
+ detail: "Pass the buyer wallet in the original offramp() call when the counterparty is known."
217
+ },
218
+ {
219
+ title: "Share the returned otcLink",
220
+ detail: "The link is convenience; the whitelist hook is the onchain enforcement."
221
+ },
222
+ {
223
+ title: "Rotate when needed",
224
+ detail: "Use enableOtc, disableOtc, and getOtcLink on existing deposits."
225
+ }
226
+ ],
227
+ resources: [
228
+ ...sharedResources,
229
+ {
230
+ label: "Private OTC guide",
231
+ href: OFFRAMP_RESOURCE_LINKS.privateOtcGuide,
232
+ description: "Whitelist hook model and helper exports."
233
+ }
234
+ ]
235
+ },
236
+ {
237
+ profile: "webhooks",
238
+ title: "Lifecycle webhooks",
239
+ summary: "Receive deposit and OTC lifecycle state with HMAC verification.",
240
+ steps: [
241
+ {
242
+ title: "Create a Peerlytics API key",
243
+ detail: "One key authenticates both Peerlytics and USDCtoFiat developer surfaces."
244
+ },
245
+ {
246
+ title: "Register an endpoint",
247
+ detail: "Point the console at an HTTPS endpoint that can read the raw request body."
248
+ },
249
+ {
250
+ title: "Verify before parsing",
251
+ detail: "Compute HMAC-SHA256 over timestamp.rawBody and compare to v1 in constant time."
252
+ },
253
+ {
254
+ title: "Reconcile important state",
255
+ detail: "Treat events as hints and call deposits(address) or your indexer for hard state."
256
+ }
257
+ ],
258
+ resources: [
259
+ ...sharedResources,
260
+ {
261
+ label: "Webhooks guide",
262
+ href: OFFRAMP_RESOURCE_LINKS.webhooksGuide,
263
+ description: "Event names, headers, and replay-window guidance."
264
+ },
265
+ {
266
+ label: "Peerlytics console",
267
+ href: OFFRAMP_RESOURCE_LINKS.peerlyticsDevelopers,
268
+ description: "API keys, credits, and endpoint management."
269
+ }
270
+ ]
271
+ },
272
+ {
273
+ profile: "peerlytics",
274
+ title: "Peerlytics expansion",
275
+ summary: "Add market data, explorer reads, analytics, and credit-backed API access.",
276
+ steps: [
277
+ {
278
+ title: "Start with deposits",
279
+ detail: "@usdctofiat/offramp creates delegated seller inventory without an API key."
280
+ },
281
+ {
282
+ title: "Add the paid API",
283
+ detail: "Use @peerlytics/sdk when the product needs orderbook, analytics, and webhooks."
284
+ },
285
+ {
286
+ title: "Buy credits as usage grows",
287
+ detail: "Peerlytics credits back deeper API calls and Pro webhook access."
288
+ }
289
+ ],
290
+ resources: [
291
+ ...sharedResources,
292
+ {
293
+ label: "Peerlytics expansion guide",
294
+ href: OFFRAMP_RESOURCE_LINKS.peerlyticsGuide,
295
+ description: "When to add the paid protocol API alongside the free deposit SDK."
296
+ },
297
+ {
298
+ label: "Peerlytics pricing",
299
+ href: OFFRAMP_RESOURCE_LINKS.peerlyticsPricing,
300
+ description: "Credit packs, Free and Pro plans, and API limits."
301
+ }
302
+ ]
303
+ }
304
+ ];
305
+ var OFFRAMP_DEVELOPER_RESOURCES = {
306
+ packageName: "@usdctofiat/offramp",
307
+ sdkVersion: SDK_VERSION,
308
+ chain: "base-mainnet",
309
+ chainId: 8453,
310
+ referrer: REFERRER,
311
+ delegation: {
312
+ required: true,
313
+ rateManagerId: DELEGATE_RATE_MANAGER_ID,
314
+ rateManagerAddress: RATE_MANAGER_REGISTRY_ADDRESS,
315
+ feeRateBps: DELEGATE_MANAGER_FEE_BPS,
316
+ escrow: ESCROW_ADDRESS
317
+ },
318
+ links: {
319
+ developerPortal: OFFRAMP_RESOURCE_LINKS.developerPortal,
320
+ sdkGuide: OFFRAMP_RESOURCE_LINKS.sdkGuide,
321
+ appGuide: OFFRAMP_RESOURCE_LINKS.appGuide,
322
+ botGuide: OFFRAMP_RESOURCE_LINKS.botGuide,
323
+ agentGuide: OFFRAMP_RESOURCE_LINKS.agentGuide,
324
+ webhooksGuide: OFFRAMP_RESOURCE_LINKS.webhooksGuide,
325
+ privateOtcGuide: OFFRAMP_RESOURCE_LINKS.privateOtcGuide,
326
+ peerlyticsGuide: OFFRAMP_RESOURCE_LINKS.peerlyticsGuide,
327
+ agentSkill: OFFRAMP_RESOURCE_LINKS.agentSkill,
328
+ shortMachineReference: OFFRAMP_RESOURCE_LINKS.shortMachineReference,
329
+ fullMachineReference: OFFRAMP_RESOURCE_LINKS.fullMachineReference,
330
+ starters: OFFRAMP_RESOURCE_LINKS.starters,
331
+ peerlyticsDevelopers: OFFRAMP_RESOURCE_LINKS.peerlyticsDevelopers,
332
+ peerlyticsPricing: OFFRAMP_RESOURCE_LINKS.peerlyticsPricing,
333
+ npm: OFFRAMP_RESOURCE_LINKS.npm
334
+ },
335
+ playbooks: OFFRAMP_INTEGRATION_PLAYBOOKS
336
+ };
337
+ function getOfframpDeveloperResources(profile) {
338
+ if (!profile) return OFFRAMP_DEVELOPER_RESOURCES;
339
+ const playbook = OFFRAMP_INTEGRATION_PLAYBOOKS.find((entry) => entry.profile === profile);
340
+ if (!playbook) return OFFRAMP_DEVELOPER_RESOURCES;
341
+ return playbook;
342
+ }
58
343
  export {
59
344
  CURRENCIES,
345
+ DEFAULT_EXTENSION_INSTALL_URL,
60
346
  ESCROW_ADDRESS,
61
347
  MakersCreateError,
348
+ OFFRAMP_DEVELOPER_RESOURCES,
62
349
  OFFRAMP_ERROR_CODES,
350
+ OFFRAMP_INTEGRATION_PLAYBOOKS,
351
+ OFFRAMP_RESOURCE_LINKS,
63
352
  Offramp,
64
353
  OfframpError,
65
354
  PEER_EXTENSION_CHROME_URL,
@@ -75,6 +364,7 @@ export {
75
364
  disableOtc,
76
365
  emitEvent,
77
366
  enableOtc,
367
+ getOfframpDeveloperResources,
78
368
  getOtcLink,
79
369
  getPeerExtensionRegistrationAuthParams,
80
370
  getPeerExtensionRegistrationInfo,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/types.ts"],"sourcesContent":["import type { PlatformEntry } from \"./platforms\";\nimport type { CurrencyEntry } from \"./currencies\";\n\nexport const OFFRAMP_ERROR_CODES = {\n VALIDATION: \"VALIDATION\",\n APPROVAL_FAILED: \"APPROVAL_FAILED\",\n REGISTRATION_FAILED: \"REGISTRATION_FAILED\",\n /**\n * Curator rejected the maker because the user has not registered this\n * handle in the Peer extension yet. Thrown from `offramp()` for PayPal\n * and Wise when `/v2/makers/create` returns 400 or a \"creating the maker\"\n * message. Recover by prompting the user through the Peer extension via\n * `usePeerExtensionRegistration(platform)` (React) or\n * `completePeerExtensionRegistration(...)`, then retrying `offramp()`.\n */\n EXTENSION_REGISTRATION_REQUIRED: \"EXTENSION_REGISTRATION_REQUIRED\",\n DEPOSIT_FAILED: \"DEPOSIT_FAILED\",\n CONFIRMATION_FAILED: \"CONFIRMATION_FAILED\",\n DELEGATION_FAILED: \"DELEGATION_FAILED\",\n USER_CANCELLED: \"USER_CANCELLED\",\n UNSUPPORTED: \"UNSUPPORTED\",\n} as const;\n\nexport type OfframpErrorCode = (typeof OFFRAMP_ERROR_CODES)[keyof typeof OFFRAMP_ERROR_CODES];\n\nexport interface OfframpParams {\n /** USDC amount as decimal string, min 1. */\n amount: string;\n /** Payment platform — use `PLATFORMS.REVOLUT` etc. */\n platform: PlatformEntry;\n /** Fiat currency — use `CURRENCIES.EUR` etc. */\n currency: CurrencyEntry;\n /** Platform-specific identifier (username, email, IBAN). */\n identifier: string;\n /** Optional: restrict the deposit to this taker wallet (OTC private order). */\n otcTaker?: string;\n /** Optional SDK-only referral metadata for telemetry attribution. */\n referralId?: string;\n /** Optional SDK-only integrator metadata for telemetry attribution. */\n integratorId?: string;\n /**\n * Optional per-wallet key to replay the first successful result for 10 minutes.\n *\n * Browser-only: the replay cache is backed by `sessionStorage` and is a no-op\n * in Node/worker runtimes (no duplicate protection there). It is honored only\n * by the `Offramp` class (`createDeposit`) / the `useOfframp` hook — the\n * standalone `offramp()` function ignores it. For server-side dedup, call\n * `deposits(walletAddress)` and reuse an existing open deposit before creating\n * a new one (the SDK's own resume behavior does this for the delegation step).\n */\n idempotencyKey?: string;\n}\n\nexport interface OfframpResult {\n depositId: string;\n txHash: string;\n /** Whether an existing undelegated deposit was resumed. */\n resumed: boolean;\n /** OTC link for the taker, present when `otcTaker` was provided. */\n otcLink?: string;\n}\n\nexport type OfframpStep =\n | \"approving\"\n | \"registering\"\n | \"depositing\"\n | \"confirming\"\n | \"delegating\"\n | \"restricting\"\n | \"resuming\"\n | \"done\";\n\nexport type OfframpState =\n | \"idle\"\n | \"approving\"\n | \"registering\"\n | \"depositing\"\n | \"confirming\"\n | \"delegating\"\n | \"done\"\n | \"error\";\n\nexport interface OfframpProgress {\n step: OfframpStep;\n txHash?: string;\n depositId?: string;\n}\n\nexport type OnProgress = (progress: OfframpProgress) => void;\n\nexport type DepositStatus = \"active\" | \"empty\" | \"closed\";\n\nexport interface OfframpQuoteInput {\n amount: string;\n currency: CurrencyEntry;\n platform: PlatformEntry;\n}\n\nexport interface OfframpQuote {\n amountUsdc: number;\n expectedFiat: number;\n effectiveRate: number;\n vaultSpreadBps: number;\n}\n\nexport interface OfframpVaultStatus {\n rateManagerId: string;\n rateManagerAddress: string;\n /**\n * Delegate vault manager fee in basis points (currently 10 = 0.10%). Charged\n * by the vault's rate manager on each fill and deducted from the USDC released\n * to the buyer; not added to the maker's deposit cost. See the README \"Fees\".\n */\n feeRateBps: number;\n escrow: string;\n isActive: boolean;\n}\n\nexport interface OfframpCreateOptions {\n integratorId?: string;\n referralId?: string;\n telemetry?: boolean;\n /**\n * Override the curator REST base URL (default `https://api.zkp2p.xyz`) used\n * for maker registration/validation and the SDK's REST calls. For\n * testing/proxying/mocking only — the indexer and Base RPC always target\n * mainnet. Honored by the `Offramp` class (`createDeposit`); absent ⇒ default\n * behavior is unchanged.\n */\n apiBaseUrl?: string;\n}\n\nexport interface DepositInfo {\n /** Numeric deposit ID. Pass this to `close()`. */\n depositId: string;\n /** Composite ID (escrowAddress_depositId). */\n compositeId: string;\n /** Creation transaction hash. */\n txHash?: string;\n status: DepositStatus;\n remainingUsdc: number;\n outstandingUsdc: number;\n totalTakenUsdc: number;\n fulfilledIntents: number;\n paymentMethods: string[];\n currencies: string[];\n rateSource: string;\n delegated: boolean;\n escrowAddress: string;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGO,IAAM,sBAAsB;AAAA,EACjC,YAAY;AAAA,EACZ,iBAAiB;AAAA,EACjB,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASrB,iCAAiC;AAAA,EACjC,gBAAgB;AAAA,EAChB,qBAAqB;AAAA,EACrB,mBAAmB;AAAA,EACnB,gBAAgB;AAAA,EAChB,aAAa;AACf;","names":[]}
1
+ {"version":3,"sources":["../src/types.ts","../src/resources.ts"],"sourcesContent":["import type { PlatformEntry } from \"./platforms\";\nimport type { CurrencyEntry } from \"./currencies\";\n\nexport const OFFRAMP_ERROR_CODES = {\n VALIDATION: \"VALIDATION\",\n APPROVAL_FAILED: \"APPROVAL_FAILED\",\n REGISTRATION_FAILED: \"REGISTRATION_FAILED\",\n /**\n * Curator rejected the maker because the user has not registered this\n * handle in the Peer extension yet. Thrown from `offramp()` for PayPal\n * and Wise when `/v2/makers/create` returns 400 or a \"creating the maker\"\n * message. Recover by prompting the user through the Peer extension via\n * `usePeerExtensionRegistration(platform)` (React) or\n * `completePeerExtensionRegistration(...)`, then retrying `offramp()`.\n */\n EXTENSION_REGISTRATION_REQUIRED: \"EXTENSION_REGISTRATION_REQUIRED\",\n DEPOSIT_FAILED: \"DEPOSIT_FAILED\",\n CONFIRMATION_FAILED: \"CONFIRMATION_FAILED\",\n DELEGATION_FAILED: \"DELEGATION_FAILED\",\n USER_CANCELLED: \"USER_CANCELLED\",\n UNSUPPORTED: \"UNSUPPORTED\",\n} as const;\n\nexport type OfframpErrorCode = (typeof OFFRAMP_ERROR_CODES)[keyof typeof OFFRAMP_ERROR_CODES];\n\nexport interface OfframpParams {\n /** USDC amount as decimal string, min 1. */\n amount: string;\n /** Payment platform — use `PLATFORMS.REVOLUT` etc. */\n platform: PlatformEntry;\n /** Fiat currency — use `CURRENCIES.EUR` etc. */\n currency: CurrencyEntry;\n /** Platform-specific identifier (username, email, IBAN). */\n identifier: string;\n /** Optional: restrict the deposit to this taker wallet (OTC private order). */\n otcTaker?: string;\n /** Optional SDK-only referral metadata for telemetry attribution. */\n referralId?: string;\n /** Optional SDK-only integrator metadata for telemetry attribution. */\n integratorId?: string;\n /**\n * Optional per-wallet key to replay the first successful result for 10 minutes.\n *\n * Browser-only: the replay cache is backed by `sessionStorage` and is a no-op\n * in Node/worker runtimes (no duplicate protection there). It is honored only\n * by the `Offramp` class (`createDeposit`) / the `useOfframp` hook — the\n * standalone `offramp()` function ignores it. For server-side dedup, call\n * `deposits(walletAddress)` and reuse an existing open deposit before creating\n * a new one (the SDK's own resume behavior does this for the delegation step).\n */\n idempotencyKey?: string;\n}\n\nexport interface OfframpResult {\n depositId: string;\n txHash: string;\n /** Whether an existing undelegated deposit was resumed. */\n resumed: boolean;\n /** OTC link for the taker, present when `otcTaker` was provided. */\n otcLink?: string;\n}\n\nexport type OfframpStep =\n | \"approving\"\n | \"registering\"\n | \"depositing\"\n | \"confirming\"\n | \"delegating\"\n | \"restricting\"\n | \"resuming\"\n | \"done\";\n\nexport type OfframpState =\n | \"idle\"\n | \"approving\"\n | \"registering\"\n | \"depositing\"\n | \"confirming\"\n | \"delegating\"\n | \"done\"\n | \"error\";\n\nexport interface OfframpProgress {\n step: OfframpStep;\n txHash?: string;\n depositId?: string;\n}\n\nexport type OnProgress = (progress: OfframpProgress) => void;\n\nexport type DepositStatus = \"active\" | \"empty\" | \"closed\";\n\nexport interface OfframpQuoteInput {\n amount: string;\n currency: CurrencyEntry;\n platform: PlatformEntry;\n}\n\nexport interface OfframpQuote {\n amountUsdc: number;\n expectedFiat: number;\n effectiveRate: number;\n vaultSpreadBps: number;\n}\n\nexport interface OfframpVaultStatus {\n rateManagerId: string;\n rateManagerAddress: string;\n /**\n * Delegate vault manager fee in basis points (currently 10 = 0.10%). Charged\n * by the vault's rate manager on each fill and deducted from the USDC released\n * to the buyer; not added to the maker's deposit cost. See the README \"Fees\".\n */\n feeRateBps: number;\n escrow: string;\n isActive: boolean;\n}\n\nexport interface OfframpCreateOptions {\n integratorId?: string;\n referralId?: string;\n telemetry?: boolean;\n /**\n * Override the curator REST base URL (default `https://api.zkp2p.xyz`) used\n * for maker registration/validation and the SDK's REST calls. For\n * testing/proxying/mocking only — the indexer and Base RPC always target\n * mainnet. Honored by the `Offramp` class (`createDeposit`); absent ⇒ default\n * behavior is unchanged.\n */\n apiBaseUrl?: string;\n}\n\nexport interface DepositInfo {\n /** Numeric deposit ID. Pass this to `close()`. */\n depositId: string;\n /** Composite ID (escrowAddress_depositId). */\n compositeId: string;\n /** Creation transaction hash. */\n txHash?: string;\n status: DepositStatus;\n remainingUsdc: number;\n outstandingUsdc: number;\n totalTakenUsdc: number;\n fulfilledIntents: number;\n paymentMethods: string[];\n currencies: string[];\n rateSource: string;\n delegated: boolean;\n escrowAddress: string;\n}\n","import {\n DELEGATE_MANAGER_FEE_BPS,\n DELEGATE_RATE_MANAGER_ID,\n ESCROW_ADDRESS,\n RATE_MANAGER_REGISTRY_ADDRESS,\n REFERRER,\n SDK_VERSION,\n} from \"./config\";\n\nexport type OfframpIntegratorProfile =\n | \"app\"\n | \"bot\"\n | \"agent\"\n | \"private-otc\"\n | \"webhooks\"\n | \"peerlytics\";\n\nexport interface OfframpResourceLink {\n label: string;\n href: string;\n description: string;\n}\n\nexport interface OfframpIntegrationStep {\n title: string;\n detail: string;\n}\n\nexport interface OfframpIntegrationPlaybook {\n profile: OfframpIntegratorProfile;\n title: string;\n summary: string;\n steps: OfframpIntegrationStep[];\n resources: OfframpResourceLink[];\n}\n\nexport interface OfframpDeveloperResources {\n packageName: \"@usdctofiat/offramp\";\n sdkVersion: string;\n chain: \"base-mainnet\";\n chainId: 8453;\n referrer: typeof REFERRER;\n delegation: {\n required: true;\n rateManagerId: typeof DELEGATE_RATE_MANAGER_ID;\n rateManagerAddress: typeof RATE_MANAGER_REGISTRY_ADDRESS;\n feeRateBps: typeof DELEGATE_MANAGER_FEE_BPS;\n escrow: typeof ESCROW_ADDRESS;\n };\n links: {\n developerPortal: string;\n sdkGuide: string;\n appGuide: string;\n botGuide: string;\n agentGuide: string;\n webhooksGuide: string;\n privateOtcGuide: string;\n peerlyticsGuide: string;\n agentSkill: string;\n shortMachineReference: string;\n fullMachineReference: string;\n starters: string;\n peerlyticsDevelopers: string;\n peerlyticsPricing: string;\n npm: string;\n };\n playbooks: OfframpIntegrationPlaybook[];\n}\n\nexport const OFFRAMP_RESOURCE_LINKS = {\n developerPortal: \"https://usdctofiat.xyz/developers/\",\n sdkGuide: \"https://usdctofiat.xyz/developers/offramp-sdk/\",\n appGuide: \"https://usdctofiat.xyz/developers/apps/\",\n botGuide: \"https://usdctofiat.xyz/developers/bots/\",\n agentGuide: \"https://usdctofiat.xyz/developers/agents/\",\n webhooksGuide: \"https://usdctofiat.xyz/developers/webhooks/\",\n privateOtcGuide: \"https://usdctofiat.xyz/developers/private-otc/\",\n peerlyticsGuide: \"https://usdctofiat.xyz/developers/peerlytics/\",\n agentSkill: \"https://usdctofiat.xyz/skills/usdctofiat.md\",\n shortMachineReference: \"https://usdctofiat.xyz/llms.txt\",\n fullMachineReference: \"https://usdctofiat.xyz/llms-full.txt\",\n starters: \"https://github.com/ADWilkinson/usdctofiat-peerlytics-starters\",\n peerlyticsDevelopers: \"https://peerlytics.xyz/developers\",\n peerlyticsPricing: \"https://peerlytics.xyz/pricing\",\n npm: \"https://www.npmjs.com/package/@usdctofiat/offramp\",\n} as const;\n\nconst sharedResources: OfframpResourceLink[] = [\n {\n label: \"Developer portal\",\n href: OFFRAMP_RESOURCE_LINKS.developerPortal,\n description: \"Human-readable hub for SDK, webhooks, OTC, bots, agents, and Peerlytics.\",\n },\n {\n label: \"Starter templates\",\n href: OFFRAMP_RESOURCE_LINKS.starters,\n description: \"Next.js, Vite, Telegram-bot, scripts, and HMAC webhook receivers.\",\n },\n {\n label: \"Agent skill\",\n href: OFFRAMP_RESOURCE_LINKS.agentSkill,\n description: \"Drop-in skill file for coding agents integrating the off-ramp.\",\n },\n];\n\nexport const OFFRAMP_INTEGRATION_PLAYBOOKS: OfframpIntegrationPlaybook[] = [\n {\n profile: \"app\",\n title: \"Wallet app\",\n summary: \"Add a sell-USDC button to a user-facing web app.\",\n steps: [\n {\n title: \"Collect route inputs\",\n detail: \"Ask for amount, platform, currency, and the platform-specific payout identifier.\",\n },\n {\n title: \"Call useOfframp or createOfframp\",\n detail:\n \"Pass the user's viem WalletClient so the user signs approval, deposit, and delegation.\",\n },\n {\n title: \"Handle PayPal and Wise registration\",\n detail: \"Catch EXTENSION_REGISTRATION_REQUIRED and drive usePeerExtensionRegistration.\",\n },\n {\n title: \"Reconcile state\",\n detail: \"Use deposits(address) and webhooks rather than assuming the browser stayed open.\",\n },\n ],\n resources: [\n ...sharedResources,\n {\n label: \"App integration guide\",\n href: OFFRAMP_RESOURCE_LINKS.appGuide,\n description: \"User-facing app flow, React hooks, and wallet-state guidance.\",\n },\n {\n label: \"SDK guide\",\n href: OFFRAMP_RESOURCE_LINKS.sdkGuide,\n description: \"Core SDK exports, resumability, errors, and examples.\",\n },\n ],\n },\n {\n profile: \"bot\",\n title: \"Bot or backend worker\",\n summary: \"Create delegated deposits from a server wallet or automation wallet.\",\n steps: [\n {\n title: \"Own duplicate prevention\",\n detail: \"Before creating, call deposits(address) and reuse open inventory when possible.\",\n },\n {\n title: \"Pass stable attribution\",\n detail: \"Use integratorId and referralId so telemetry can separate automated flows.\",\n },\n {\n title: \"Use OTC when a buyer is known\",\n detail: \"Pass otcTaker to avoid exposing known-counterparty liquidity publicly.\",\n },\n {\n title: \"Subscribe to lifecycle state\",\n detail: \"Register HMAC webhooks so fills and closes survive process restarts.\",\n },\n ],\n resources: [\n ...sharedResources,\n {\n label: \"Bot guide\",\n href: OFFRAMP_RESOURCE_LINKS.botGuide,\n description: \"Server-wallet, retry, idempotency, and OTC patterns.\",\n },\n {\n label: \"Webhooks guide\",\n href: OFFRAMP_RESOURCE_LINKS.webhooksGuide,\n description: \"HMAC verification and lifecycle event names.\",\n },\n ],\n },\n {\n profile: \"agent\",\n title: \"Coding agent\",\n summary: \"Give an agent enough canonical context to build without guessing protocol details.\",\n steps: [\n {\n title: \"Load the skill\",\n detail: \"Point the agent at /skills/usdctofiat.md before it writes integration code.\",\n },\n {\n title: \"Use the machine references\",\n detail: \"Feed llms.txt or llms-full.txt when the agent needs routes, contracts, and rules.\",\n },\n {\n title: \"Scaffold first\",\n detail: \"Use create-offramp-app or starters before asking the agent to invent wiring.\",\n },\n {\n title: \"Verify delegation\",\n detail:\n \"Check getVaultStatus() and the returned deposit state; SDK deposits must delegate.\",\n },\n ],\n resources: [\n ...sharedResources,\n {\n label: \"Agent guide\",\n href: OFFRAMP_RESOURCE_LINKS.agentGuide,\n description: \"Context-pack and prompt sequence for AI-assisted integration.\",\n },\n {\n label: \"Full machine reference\",\n href: OFFRAMP_RESOURCE_LINKS.fullMachineReference,\n description: \"Canonical routes, contracts, fees, and extractable answers.\",\n },\n ],\n },\n {\n profile: \"private-otc\",\n title: \"Private OTC flow\",\n summary: \"Restrict a delegated deposit to one approved taker wallet.\",\n steps: [\n {\n title: \"Create with otcTaker\",\n detail:\n \"Pass the buyer wallet in the original offramp() call when the counterparty is known.\",\n },\n {\n title: \"Share the returned otcLink\",\n detail: \"The link is convenience; the whitelist hook is the onchain enforcement.\",\n },\n {\n title: \"Rotate when needed\",\n detail: \"Use enableOtc, disableOtc, and getOtcLink on existing deposits.\",\n },\n ],\n resources: [\n ...sharedResources,\n {\n label: \"Private OTC guide\",\n href: OFFRAMP_RESOURCE_LINKS.privateOtcGuide,\n description: \"Whitelist hook model and helper exports.\",\n },\n ],\n },\n {\n profile: \"webhooks\",\n title: \"Lifecycle webhooks\",\n summary: \"Receive deposit and OTC lifecycle state with HMAC verification.\",\n steps: [\n {\n title: \"Create a Peerlytics API key\",\n detail: \"One key authenticates both Peerlytics and USDCtoFiat developer surfaces.\",\n },\n {\n title: \"Register an endpoint\",\n detail: \"Point the console at an HTTPS endpoint that can read the raw request body.\",\n },\n {\n title: \"Verify before parsing\",\n detail: \"Compute HMAC-SHA256 over timestamp.rawBody and compare to v1 in constant time.\",\n },\n {\n title: \"Reconcile important state\",\n detail: \"Treat events as hints and call deposits(address) or your indexer for hard state.\",\n },\n ],\n resources: [\n ...sharedResources,\n {\n label: \"Webhooks guide\",\n href: OFFRAMP_RESOURCE_LINKS.webhooksGuide,\n description: \"Event names, headers, and replay-window guidance.\",\n },\n {\n label: \"Peerlytics console\",\n href: OFFRAMP_RESOURCE_LINKS.peerlyticsDevelopers,\n description: \"API keys, credits, and endpoint management.\",\n },\n ],\n },\n {\n profile: \"peerlytics\",\n title: \"Peerlytics expansion\",\n summary: \"Add market data, explorer reads, analytics, and credit-backed API access.\",\n steps: [\n {\n title: \"Start with deposits\",\n detail: \"@usdctofiat/offramp creates delegated seller inventory without an API key.\",\n },\n {\n title: \"Add the paid API\",\n detail: \"Use @peerlytics/sdk when the product needs orderbook, analytics, and webhooks.\",\n },\n {\n title: \"Buy credits as usage grows\",\n detail: \"Peerlytics credits back deeper API calls and Pro webhook access.\",\n },\n ],\n resources: [\n ...sharedResources,\n {\n label: \"Peerlytics expansion guide\",\n href: OFFRAMP_RESOURCE_LINKS.peerlyticsGuide,\n description: \"When to add the paid protocol API alongside the free deposit SDK.\",\n },\n {\n label: \"Peerlytics pricing\",\n href: OFFRAMP_RESOURCE_LINKS.peerlyticsPricing,\n description: \"Credit packs, Free and Pro plans, and API limits.\",\n },\n ],\n },\n];\n\nexport const OFFRAMP_DEVELOPER_RESOURCES: OfframpDeveloperResources = {\n packageName: \"@usdctofiat/offramp\",\n sdkVersion: SDK_VERSION,\n chain: \"base-mainnet\",\n chainId: 8453,\n referrer: REFERRER,\n delegation: {\n required: true,\n rateManagerId: DELEGATE_RATE_MANAGER_ID,\n rateManagerAddress: RATE_MANAGER_REGISTRY_ADDRESS,\n feeRateBps: DELEGATE_MANAGER_FEE_BPS,\n escrow: ESCROW_ADDRESS,\n },\n links: {\n developerPortal: OFFRAMP_RESOURCE_LINKS.developerPortal,\n sdkGuide: OFFRAMP_RESOURCE_LINKS.sdkGuide,\n appGuide: OFFRAMP_RESOURCE_LINKS.appGuide,\n botGuide: OFFRAMP_RESOURCE_LINKS.botGuide,\n agentGuide: OFFRAMP_RESOURCE_LINKS.agentGuide,\n webhooksGuide: OFFRAMP_RESOURCE_LINKS.webhooksGuide,\n privateOtcGuide: OFFRAMP_RESOURCE_LINKS.privateOtcGuide,\n peerlyticsGuide: OFFRAMP_RESOURCE_LINKS.peerlyticsGuide,\n agentSkill: OFFRAMP_RESOURCE_LINKS.agentSkill,\n shortMachineReference: OFFRAMP_RESOURCE_LINKS.shortMachineReference,\n fullMachineReference: OFFRAMP_RESOURCE_LINKS.fullMachineReference,\n starters: OFFRAMP_RESOURCE_LINKS.starters,\n peerlyticsDevelopers: OFFRAMP_RESOURCE_LINKS.peerlyticsDevelopers,\n peerlyticsPricing: OFFRAMP_RESOURCE_LINKS.peerlyticsPricing,\n npm: OFFRAMP_RESOURCE_LINKS.npm,\n },\n playbooks: OFFRAMP_INTEGRATION_PLAYBOOKS,\n};\n\nexport function getOfframpDeveloperResources(\n profile?: OfframpIntegratorProfile,\n): OfframpDeveloperResources | OfframpIntegrationPlaybook {\n if (!profile) return OFFRAMP_DEVELOPER_RESOURCES;\n const playbook = OFFRAMP_INTEGRATION_PLAYBOOKS.find((entry) => entry.profile === profile);\n if (!playbook) return OFFRAMP_DEVELOPER_RESOURCES;\n return playbook;\n}\n"],"mappings":"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","names":[]}