agentref 1.0.5 → 5.0.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/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## Unreleased
4
+
5
+ - Removed obsolete merchant-scoped integration methods from the active SDK surface.
6
+ - Aligned `merchant.get()` / `merchant.update()` types with the final merchant profile contract.
7
+ - Added program-scoped integration methods on `programs`: Stripe connect/disconnect and domain verification/status/removal.
8
+ - Added `webhooks` resource with list/create/get/update/delete/rotate-secret support.
9
+
3
10
  ## 1.0.5
4
11
 
5
12
  - **Fix:** `merchant.updatePayoutInfo()` now sends `PATCH` instead of `PUT` to match the API contract.
package/README.md CHANGED
@@ -21,14 +21,14 @@ console.log(programs.meta.requestId)
21
21
  ## Authentication
22
22
 
23
23
  - API key is sent as `Authorization: Bearer <key>`.
24
- - Supported key prefixes: `ak_live_*`, `ak_aff_*`, `ak_onb_*`.
24
+ - Supported key prefixes: `ak_live_*`, `ak_aff_*`.
25
25
  - You can pass `apiKey` directly or use `AGENTREF_API_KEY`.
26
26
  - Default behavior hard-fails in browser contexts to prevent API key exposure.
27
27
 
28
28
  ## Resources
29
29
 
30
30
  - `client.programs`
31
- - `list`, `listAll`, `get`, `create`, `update`, `delete`, `stats`, `listAffiliates`, `listCoupons`, `createCoupon`, `deleteCoupon`, `listInvites`, `createInvite`, `updateMarketplace`
31
+ - `list`, `listAll`, `get`, `create`, `update`, `delete`, `stats`, `listAffiliates`, `listCoupons`, `createCoupon`, `deleteCoupon`, `listInvites`, `createInvite`, `updateMarketplace`, `connectStripe`, `disconnectStripe`, `verifyDomain`, `removeDomainVerification`, `getDomainStatus`
32
32
  - `client.affiliates`
33
33
  - `list`, `get`, `approve`, `block`, `unblock`
34
34
  - `client.conversions`
@@ -40,7 +40,9 @@ console.log(programs.meta.requestId)
40
40
  - `client.billing`
41
41
  - `current`, `tiers`, `subscribe`
42
42
  - `client.merchant`
43
- - `get`, `update`, `connectStripe`, `domainStatus`
43
+ - `get`, `update`, `getPayoutInfo`, `updatePayoutInfo`, `getNotifications`, `updateNotifications`
44
+ - `client.webhooks`
45
+ - `list`, `create`, `get`, `update`, `delete`, `rotateSecret`
44
46
 
45
47
  ## Pagination
46
48
 
package/dist/index.cjs CHANGED
@@ -93,7 +93,7 @@ var SAFE_METHODS = /* @__PURE__ */ new Set(["GET", "HEAD"]);
93
93
  var DEFAULT_BASE_URL = "https://www.agentref.dev/api/v1";
94
94
  var DEFAULT_TIMEOUT = 3e4;
95
95
  var DEFAULT_MAX_RETRIES = 2;
96
- var VERSION = true ? "1.0.5" : "0.0.0";
96
+ var VERSION = true ? "5.0.1" : "0.0.0";
97
97
  function hasUsableIdempotencyKey(idempotencyKey) {
98
98
  return typeof idempotencyKey === "string" && idempotencyKey.trim().length > 0;
99
99
  }
@@ -360,20 +360,6 @@ var MerchantResource = class {
360
360
  });
361
361
  return envelope.data;
362
362
  }
363
- async connectStripe() {
364
- const envelope = await this.http.request({
365
- method: "POST",
366
- path: "/merchant/connect-stripe"
367
- });
368
- return envelope.data;
369
- }
370
- async domainStatus() {
371
- const envelope = await this.http.request({
372
- method: "GET",
373
- path: "/merchant/domain-status"
374
- });
375
- return envelope.data;
376
- }
377
363
  async getPayoutInfo() {
378
364
  const envelope = await this.http.request({
379
365
  method: "GET",
@@ -549,6 +535,95 @@ var ProgramsResource = class {
549
535
  });
550
536
  return envelope.data;
551
537
  }
538
+ async connectStripe(id, data) {
539
+ const envelope = await this.http.request({
540
+ method: "POST",
541
+ path: `/programs/${id}/connect-stripe`,
542
+ body: data
543
+ });
544
+ return envelope.data;
545
+ }
546
+ async disconnectStripe(id) {
547
+ const envelope = await this.http.request({
548
+ method: "DELETE",
549
+ path: `/programs/${id}/connect-stripe`
550
+ });
551
+ return envelope.data;
552
+ }
553
+ async verifyDomain(id, data) {
554
+ const envelope = await this.http.request({
555
+ method: "POST",
556
+ path: `/programs/${id}/verify-domain`,
557
+ body: data
558
+ });
559
+ return envelope.data;
560
+ }
561
+ async removeDomainVerification(id) {
562
+ const envelope = await this.http.request({
563
+ method: "DELETE",
564
+ path: `/programs/${id}/verify-domain`
565
+ });
566
+ return envelope.data;
567
+ }
568
+ async getDomainStatus(id) {
569
+ const envelope = await this.http.request({
570
+ method: "GET",
571
+ path: `/programs/${id}/verify-domain/status`
572
+ });
573
+ return envelope.data;
574
+ }
575
+ };
576
+
577
+ // src/resources/webhooks.ts
578
+ var WebhooksResource = class {
579
+ constructor(http) {
580
+ this.http = http;
581
+ }
582
+ async list(params) {
583
+ const envelope = await this.http.request({
584
+ method: "GET",
585
+ path: "/webhooks",
586
+ query: params
587
+ });
588
+ return envelope.data;
589
+ }
590
+ async create(data) {
591
+ const envelope = await this.http.request({
592
+ method: "POST",
593
+ path: "/webhooks",
594
+ body: data
595
+ });
596
+ return envelope.data;
597
+ }
598
+ async get(id) {
599
+ const envelope = await this.http.request({
600
+ method: "GET",
601
+ path: `/webhooks/${id}`
602
+ });
603
+ return envelope.data;
604
+ }
605
+ async update(id, data) {
606
+ const envelope = await this.http.request({
607
+ method: "PATCH",
608
+ path: `/webhooks/${id}`,
609
+ body: data
610
+ });
611
+ return envelope.data;
612
+ }
613
+ async delete(id) {
614
+ const envelope = await this.http.request({
615
+ method: "DELETE",
616
+ path: `/webhooks/${id}`
617
+ });
618
+ return envelope.data;
619
+ }
620
+ async rotateSecret(id) {
621
+ const envelope = await this.http.request({
622
+ method: "POST",
623
+ path: `/webhooks/${id}/rotate-secret`
624
+ });
625
+ return envelope.data;
626
+ }
552
627
  };
553
628
 
554
629
  // src/client.ts
@@ -562,6 +637,7 @@ var AgentRef = class {
562
637
  this.flags = new FlagsResource(http);
563
638
  this.billing = new BillingResource(http);
564
639
  this.merchant = new MerchantResource(http);
640
+ this.webhooks = new WebhooksResource(http);
565
641
  }
566
642
  };
567
643
  // Annotate the CommonJS export names for ESM import in node:
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/errors.ts","../src/http.ts","../src/resources/affiliates.ts","../src/resources/billing.ts","../src/resources/conversions.ts","../src/resources/flags.ts","../src/resources/merchant.ts","../src/resources/payouts.ts","../src/resources/programs.ts","../src/client.ts"],"sourcesContent":["export { AgentRef } from './client.js'\nexport {\n AgentRefError,\n AuthError,\n ConflictError,\n ForbiddenError,\n NotFoundError,\n RateLimitError,\n ServerError,\n ValidationError,\n} from './errors.js'\nexport type {\n AgentRefConfig,\n Affiliate,\n AffiliateSortBy,\n AffiliateStatus,\n BillingStatus,\n BillingTier,\n BillingTierId,\n CommissionType,\n CreateInviteParams,\n CreatePayoutParams,\n Conversion,\n ConversionStats,\n ConversionStatus,\n Coupon,\n CreateCouponParams,\n CreateProgramParams,\n Flag,\n FlagStats,\n FlagStatus,\n FlagType,\n Invite,\n Merchant,\n MutationOptions,\n NotificationPreferences,\n PaginatedResponse,\n PaginationMeta,\n PayoutInfo,\n PendingAffiliate,\n Payout,\n ProgramMarketplaceVisibility,\n PayoutStats,\n PayoutStatus,\n Program,\n ProgramStats,\n ProgramStatus,\n SortOrder,\n StripeConnectSession,\n MerchantDomainStatus,\n UpdateMerchantParams,\n UpdateNotificationPreferencesParams,\n UpdatePayoutInfoParams,\n UpdateProgramMarketplaceParams,\n ResolveFlagParams,\n UpdateProgramParams,\n} from './types/index.js'\n","export class AgentRefError extends Error {\n readonly code: string\n readonly status: number\n readonly requestId: string\n\n constructor(message: string, code: string, status: number, requestId: string) {\n super(message)\n this.name = 'AgentRefError'\n this.code = code\n this.status = status\n this.requestId = requestId\n Object.setPrototypeOf(this, new.target.prototype)\n }\n}\n\nexport class AuthError extends AgentRefError {\n constructor(message: string, code: string, requestId: string) {\n super(message, code, 401, requestId)\n this.name = 'AuthError'\n }\n}\n\nexport class ForbiddenError extends AgentRefError {\n constructor(message: string, code: string, requestId: string) {\n super(message, code, 403, requestId)\n this.name = 'ForbiddenError'\n }\n}\n\nexport class ValidationError extends AgentRefError {\n readonly details: unknown\n\n constructor(message: string, code: string, requestId: string, details?: unknown) {\n super(message, code, 400, requestId)\n this.name = 'ValidationError'\n this.details = details\n }\n}\n\nexport class NotFoundError extends AgentRefError {\n constructor(message: string, code: string, requestId: string) {\n super(message, code, 404, requestId)\n this.name = 'NotFoundError'\n }\n}\n\nexport class ConflictError extends AgentRefError {\n constructor(message: string, code: string, requestId: string) {\n super(message, code, 409, requestId)\n this.name = 'ConflictError'\n }\n}\n\nexport class RateLimitError extends AgentRefError {\n readonly retryAfter: number\n\n constructor(message: string, code: string, requestId: string, retryAfter: number) {\n super(message, code, 429, requestId)\n this.name = 'RateLimitError'\n this.retryAfter = retryAfter\n }\n}\n\nexport class ServerError extends AgentRefError {\n constructor(message: string, code: string, status: number, requestId: string) {\n super(message, code, status, requestId)\n this.name = 'ServerError'\n }\n}\n","import {\n AgentRefError,\n AuthError,\n ConflictError,\n ForbiddenError,\n NotFoundError,\n RateLimitError,\n ServerError,\n ValidationError,\n} from './errors.js'\nimport type { AgentRefConfig } from './types/index.js'\n\nexport type HttpMethod = 'GET' | 'HEAD' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'\n\nconst SAFE_METHODS: ReadonlySet<HttpMethod> = new Set(['GET', 'HEAD'])\n\nexport interface RequestOptions {\n method: HttpMethod\n path: string\n body?: unknown\n query?: Record<string, string | number | boolean | undefined>\n idempotencyKey?: string\n}\n\nconst DEFAULT_BASE_URL = 'https://www.agentref.dev/api/v1'\nconst DEFAULT_TIMEOUT = 30_000\nconst DEFAULT_MAX_RETRIES = 2\n\ndeclare const __SDK_VERSION__: string\nconst VERSION = typeof __SDK_VERSION__ === 'string' ? __SDK_VERSION__ : '0.0.0'\n\nfunction hasUsableIdempotencyKey(idempotencyKey: string | undefined): boolean {\n return typeof idempotencyKey === 'string' && idempotencyKey.trim().length > 0\n}\n\nexport class HttpClient {\n private readonly apiKey: string\n private readonly baseUrl: string\n private readonly timeout: number\n private readonly maxRetries: number\n\n constructor(config: AgentRefConfig = {}) {\n if (typeof window !== 'undefined' && !config.dangerouslyAllowBrowser) {\n throw new Error(\n '[AgentRef] Refusing to initialize in browser context. API keys must not be exposed client-side. Use a server-side proxy to call the AgentRef API instead. To override: set dangerouslyAllowBrowser: true (understand the security implications first).'\n )\n }\n\n const apiKey = config.apiKey ?? process.env['AGENTREF_API_KEY']\n if (!apiKey) {\n throw new Error(\n '[AgentRef] API key is required. Pass it as apiKey or set the AGENTREF_API_KEY environment variable.'\n )\n }\n\n this.apiKey = apiKey\n this.baseUrl = (config.baseUrl ?? DEFAULT_BASE_URL).replace(/\\/$/, '')\n this.timeout = config.timeout ?? DEFAULT_TIMEOUT\n this.maxRetries = config.maxRetries ?? DEFAULT_MAX_RETRIES\n }\n\n async request<T>(options: RequestOptions): Promise<T> {\n const url = this.buildUrl(options.path, options.query)\n const isSafe = SAFE_METHODS.has(options.method)\n const hasIdempotency = options.method === 'POST' && hasUsableIdempotencyKey(options.idempotencyKey)\n const canRetry = isSafe || hasIdempotency\n const maxAttempts = canRetry ? this.maxRetries + 1 : 1\n\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n let response: Response\n\n try {\n const headers: Record<string, string> = {\n Authorization: `Bearer ${this.apiKey}`,\n 'Content-Type': 'application/json',\n 'User-Agent': `agentref-node/${VERSION}`,\n }\n\n if (hasIdempotency) {\n headers['Idempotency-Key'] = options.idempotencyKey!.trim()\n }\n\n response = await fetch(url, {\n method: options.method,\n headers,\n body: options.body !== undefined ? JSON.stringify(options.body) : undefined,\n signal: AbortSignal.timeout(this.timeout),\n })\n } catch (error) {\n if (canRetry && attempt < maxAttempts - 1) {\n await this.wait(this.backoff(attempt))\n continue\n }\n throw error\n }\n\n if (!response.ok) {\n const parsedError = await this.parseError(response)\n\n if (canRetry && this.isRetryable(response.status) && attempt < maxAttempts - 1) {\n const delay =\n response.status === 429\n ? this.retryAfterToMs(response.headers.get('Retry-After'))\n : this.backoff(attempt)\n await this.wait(delay)\n continue\n }\n\n throw parsedError\n }\n\n return response.json() as Promise<T>\n }\n\n throw new ServerError('Request failed after retries', 'REQUEST_RETRY_EXHAUSTED', 500, '')\n }\n\n private buildUrl(path: string, query?: Record<string, string | number | boolean | undefined>): string {\n const normalizedPath = path.startsWith('/') ? path : `/${path}`\n const url = new URL(`${this.baseUrl}${normalizedPath}`)\n\n if (query) {\n for (const [key, value] of Object.entries(query)) {\n if (value !== undefined) {\n url.searchParams.set(key, String(value))\n }\n }\n }\n\n return url.toString()\n }\n\n private async parseError(response: Response): Promise<AgentRefError> {\n const json = (await response.json().catch(() => ({}))) as {\n error?: { code?: string; message?: string; details?: unknown }\n meta?: { requestId?: string }\n }\n\n const code = json.error?.code ?? 'UNKNOWN_ERROR'\n const message = json.error?.message ?? response.statusText\n const requestId = json.meta?.requestId ?? ''\n const details = json.error?.details\n\n if (response.status === 400) return new ValidationError(message, code, requestId, details)\n if (response.status === 401) return new AuthError(message, code, requestId)\n if (response.status === 403) return new ForbiddenError(message, code, requestId)\n if (response.status === 404) return new NotFoundError(message, code, requestId)\n if (response.status === 409) return new ConflictError(message, code, requestId)\n if (response.status === 429) {\n return new RateLimitError(message, code, requestId, this.retryAfterToSeconds(response.headers.get('Retry-After')))\n }\n\n return new ServerError(message, code, response.status, requestId)\n }\n\n private isRetryable(status: number): boolean {\n return status === 429 || status >= 500\n }\n\n private retryAfterToSeconds(headerValue: string | null): number {\n if (!headerValue) return 60\n\n const numericSeconds = Number(headerValue)\n if (!Number.isNaN(numericSeconds) && numericSeconds >= 0) {\n return Math.ceil(numericSeconds)\n }\n\n const asDate = Date.parse(headerValue)\n if (!Number.isNaN(asDate)) {\n const deltaMs = asDate - Date.now()\n return Math.max(0, Math.ceil(deltaMs / 1000))\n }\n\n return 60\n }\n\n private retryAfterToMs(headerValue: string | null): number {\n return this.retryAfterToSeconds(headerValue) * 1000\n }\n\n private wait(ms: number): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(resolve, ms)\n })\n }\n\n private backoff(attempt: number): number {\n return 500 * Math.pow(2, attempt)\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type { Affiliate, AffiliateSortBy, AffiliateStatus, MutationOptions, PaginatedResponse, SortOrder } from '../types/index.js'\n\nexport class AffiliatesResource {\n constructor(private readonly http: HttpClient) {}\n\n list(params?: {\n programId?: string\n includeBlocked?: boolean\n search?: string\n sortBy?: AffiliateSortBy\n sortOrder?: SortOrder\n status?: AffiliateStatus\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n }): Promise<PaginatedResponse<Affiliate>> {\n return this.http.request({ method: 'GET', path: '/affiliates', query: params })\n }\n\n async get(id: string, options?: { include?: 'stats' }): Promise<Affiliate> {\n const envelope = await this.http.request<{ data: Affiliate; meta: unknown }>({\n method: 'GET',\n path: `/affiliates/${id}`,\n query: options?.include ? { include: options.include } : undefined,\n })\n return envelope.data\n }\n\n async approve(id: string, options?: MutationOptions): Promise<Affiliate> {\n const envelope = await this.http.request<{ data: Affiliate; meta: unknown }>({\n method: 'POST',\n path: `/affiliates/${id}/approve`,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n\n async block(id: string, data?: { reason?: string }, options?: MutationOptions): Promise<Affiliate> {\n const envelope = await this.http.request<{ data: Affiliate; meta: unknown }>({\n method: 'POST',\n path: `/affiliates/${id}/block`,\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n\n async unblock(id: string, options?: MutationOptions): Promise<Affiliate> {\n const envelope = await this.http.request<{ data: Affiliate; meta: unknown }>({\n method: 'POST',\n path: `/affiliates/${id}/unblock`,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type { BillingStatus, BillingTier, MutationOptions } from '../types/index.js'\n\nexport class BillingResource {\n constructor(private readonly http: HttpClient) {}\n\n async current(): Promise<BillingStatus> {\n const envelope = await this.http.request<{ data: BillingStatus; meta: unknown }>({\n method: 'GET',\n path: '/billing',\n })\n return envelope.data\n }\n\n async tiers(): Promise<BillingTier[]> {\n const envelope = await this.http.request<{ data: BillingTier[]; meta: unknown }>({\n method: 'GET',\n path: '/billing/tiers',\n })\n return envelope.data\n }\n\n async subscribe(data: { tier: 'starter' | 'growth' | 'pro' | 'scale' }, options?: MutationOptions): Promise<BillingStatus> {\n const envelope = await this.http.request<{ data: BillingStatus; meta: unknown }>({\n method: 'POST',\n path: '/billing/subscribe',\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type { Conversion, ConversionStats, PaginatedResponse } from '../types/index.js'\n\nexport class ConversionsResource {\n constructor(private readonly http: HttpClient) {}\n\n list(params?: {\n programId?: string\n affiliateId?: string\n status?: string\n startDate?: string\n endDate?: string\n from?: string\n to?: string\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n }): Promise<PaginatedResponse<Conversion>> {\n return this.http.request({ method: 'GET', path: '/conversions', query: params })\n }\n\n async stats(params?: { programId?: string; period?: '7d' | '30d' | '90d' | 'all' }): Promise<ConversionStats> {\n const envelope = await this.http.request<{ data: ConversionStats; meta: unknown }>({\n method: 'GET',\n path: '/conversions/stats',\n query: params,\n })\n return envelope.data\n }\n\n async recent(params?: { limit?: number }): Promise<Conversion[]> {\n const envelope = await this.http.request<{ data: Conversion[]; meta: unknown }>({\n method: 'GET',\n path: '/conversions/recent',\n query: params,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type { Flag, FlagStats, MutationOptions, PaginatedResponse, ResolveFlagParams } from '../types/index.js'\n\nexport class FlagsResource {\n constructor(private readonly http: HttpClient) {}\n\n list(params?: {\n status?: string\n type?: string\n affiliateId?: string\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n }): Promise<PaginatedResponse<Flag>> {\n return this.http.request({ method: 'GET', path: '/flags', query: params })\n }\n\n async stats(): Promise<FlagStats> {\n const envelope = await this.http.request<{ data: FlagStats; meta: unknown }>({\n method: 'GET',\n path: '/flags/stats',\n })\n return envelope.data\n }\n\n async resolve(id: string, data: ResolveFlagParams, options?: MutationOptions): Promise<Flag> {\n const envelope = await this.http.request<{ data: Flag; meta: unknown }>({\n method: 'POST',\n path: `/flags/${id}/resolve`,\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type {\n Merchant,\n MerchantDomainStatus,\n NotificationPreferences,\n PayoutInfo,\n StripeConnectSession,\n UpdateMerchantParams,\n UpdateNotificationPreferencesParams,\n UpdatePayoutInfoParams,\n} from '../types/index.js'\n\nexport class MerchantResource {\n constructor(private readonly http: HttpClient) {}\n\n async get(): Promise<Merchant> {\n const envelope = await this.http.request<{ data: Merchant; meta: unknown }>({\n method: 'GET',\n path: '/merchant',\n })\n return envelope.data\n }\n\n async update(data: UpdateMerchantParams): Promise<Merchant> {\n const envelope = await this.http.request<{ data: Merchant; meta: unknown }>({\n method: 'PATCH',\n path: '/merchant',\n body: data,\n })\n return envelope.data\n }\n\n async connectStripe(): Promise<StripeConnectSession> {\n const envelope = await this.http.request<{ data: StripeConnectSession; meta: unknown }>({\n method: 'POST',\n path: '/merchant/connect-stripe',\n })\n return envelope.data\n }\n\n async domainStatus(): Promise<MerchantDomainStatus> {\n const envelope = await this.http.request<{ data: MerchantDomainStatus; meta: unknown }>({\n method: 'GET',\n path: '/merchant/domain-status',\n })\n return envelope.data\n }\n\n async getPayoutInfo(): Promise<PayoutInfo> {\n const envelope = await this.http.request<{ data: PayoutInfo; meta: unknown }>({\n method: 'GET',\n path: '/me/payout-info',\n })\n return envelope.data\n }\n\n async updatePayoutInfo(data: UpdatePayoutInfoParams): Promise<PayoutInfo> {\n const envelope = await this.http.request<{ data: PayoutInfo; meta: unknown }>({\n method: 'PATCH',\n path: '/me/payout-info',\n body: data,\n })\n return envelope.data\n }\n\n async getNotifications(): Promise<NotificationPreferences> {\n const envelope = await this.http.request<{ data: NotificationPreferences; meta: unknown }>({\n method: 'GET',\n path: '/merchant/notifications',\n })\n return envelope.data\n }\n\n async updateNotifications(data: UpdateNotificationPreferencesParams): Promise<NotificationPreferences> {\n const envelope = await this.http.request<{ data: NotificationPreferences; meta: unknown }>({\n method: 'PUT',\n path: '/merchant/notifications',\n body: data,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type { CreatePayoutParams, MutationOptions, PaginatedResponse, PendingAffiliate, Payout, PayoutStats, PayoutStatus } from '../types/index.js'\n\nexport class PayoutsResource {\n constructor(private readonly http: HttpClient) {}\n\n list(params?: {\n programId?: string\n affiliateId?: string\n status?: PayoutStatus\n startDate?: string\n endDate?: string\n from?: string\n to?: string\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n }): Promise<PaginatedResponse<Payout>> {\n return this.http.request({ method: 'GET', path: '/payouts', query: params })\n }\n\n listPending(params?: {\n programId?: string\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n }): Promise<PaginatedResponse<PendingAffiliate>> {\n return this.http.request({ method: 'GET', path: '/payouts/pending', query: params })\n }\n\n async stats(params?: { programId?: string; period?: '7d' | '30d' | '90d' | 'all' }): Promise<PayoutStats> {\n const envelope = await this.http.request<{ data: PayoutStats; meta: unknown }>({\n method: 'GET',\n path: '/payouts/stats',\n query: params,\n })\n return envelope.data\n }\n\n async create(data: CreatePayoutParams, options?: MutationOptions): Promise<Record<string, unknown>> {\n const envelope = await this.http.request<{ data: Record<string, unknown>; meta: unknown }>({\n method: 'POST',\n path: '/payouts',\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type {\n Affiliate,\n Coupon,\n CreateCouponParams,\n CreateInviteParams,\n CreateProgramParams,\n Invite,\n MutationOptions,\n PaginatedResponse,\n Program,\n ProgramStats,\n UpdateProgramMarketplaceParams,\n UpdateProgramParams,\n} from '../types/index.js'\n\nexport class ProgramsResource {\n constructor(private readonly http: HttpClient) {}\n\n list(params?: {\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n status?: string\n }): Promise<PaginatedResponse<Program>> {\n return this.http.request({ method: 'GET', path: '/programs', query: params })\n }\n\n async *listAll(params?: {\n pageSize?: number\n }): AsyncGenerator<Program> {\n let page = 1\n const pageSize = params?.pageSize ?? 100\n\n while (true) {\n const response = await this.list({ page, limit: pageSize })\n yield* response.data\n\n if (!response.meta.hasMore) {\n break\n }\n\n page += 1\n }\n }\n\n async get(id: string): Promise<Program> {\n const envelope = await this.http.request<{ data: Program; meta: unknown }>({\n method: 'GET',\n path: `/programs/${id}`,\n })\n return envelope.data\n }\n\n async create(data: CreateProgramParams, options?: MutationOptions): Promise<Program> {\n const envelope = await this.http.request<{ data: Program; meta: unknown }>({\n method: 'POST',\n path: '/programs',\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n\n async update(id: string, data: UpdateProgramParams): Promise<Program> {\n const envelope = await this.http.request<{ data: Program; meta: unknown }>({\n method: 'PATCH',\n path: `/programs/${id}`,\n body: data,\n })\n return envelope.data\n }\n\n async delete(id: string): Promise<Program> {\n const envelope = await this.http.request<{ data: Program; meta: unknown }>({\n method: 'DELETE',\n path: `/programs/${id}`,\n })\n return envelope.data\n }\n\n async stats(id: string, params?: { period?: string }): Promise<ProgramStats> {\n const envelope = await this.http.request<{ data: ProgramStats; meta: unknown }>({\n method: 'GET',\n path: `/programs/${id}/stats`,\n query: params,\n })\n return envelope.data\n }\n\n listAffiliates(\n id: string,\n params?: { includeBlocked?: boolean; cursor?: string; limit?: number; page?: number; pageSize?: number; offset?: number }\n ): Promise<PaginatedResponse<Affiliate>> {\n return this.http.request({\n method: 'GET',\n path: `/programs/${id}/affiliates`,\n query: params,\n })\n }\n\n async listCoupons(id: string): Promise<Coupon[]> {\n const envelope = await this.http.request<{ data: Coupon[]; meta: unknown }>({\n method: 'GET',\n path: `/programs/${id}/coupons`,\n })\n return envelope.data\n }\n\n async createCoupon(id: string, data: CreateCouponParams, options?: MutationOptions): Promise<Coupon> {\n const envelope = await this.http.request<{ data: Coupon; meta: unknown }>({\n method: 'POST',\n path: `/programs/${id}/coupons`,\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n\n async createInvite(\n id: string,\n data: CreateInviteParams,\n options?: MutationOptions\n ): Promise<Invite> {\n const envelope = await this.http.request<{ data: Invite; meta: unknown }>({\n method: 'POST',\n path: `/programs/${id}/invites`,\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n\n async listInvites(id: string): Promise<Invite[]> {\n const envelope = await this.http.request<{ data: Invite[]; meta: unknown }>({\n method: 'GET',\n path: `/programs/${id}/invites`,\n })\n return envelope.data\n }\n\n async deleteCoupon(couponId: string): Promise<Coupon> {\n const envelope = await this.http.request<{ data: Coupon; meta: unknown }>({\n method: 'DELETE',\n path: `/coupons/${couponId}`,\n })\n return envelope.data\n }\n\n async updateMarketplace(id: string, data: UpdateProgramMarketplaceParams): Promise<Record<string, unknown>> {\n const envelope = await this.http.request<{ data: Record<string, unknown>; meta: unknown }>({\n method: 'PATCH',\n path: `/programs/${id}/marketplace`,\n body: data,\n })\n return envelope.data\n }\n}\n","import { HttpClient } from './http.js'\nimport type { AgentRefConfig } from './types/index.js'\nimport { AffiliatesResource } from './resources/affiliates.js'\nimport { BillingResource } from './resources/billing.js'\nimport { ConversionsResource } from './resources/conversions.js'\nimport { FlagsResource } from './resources/flags.js'\nimport { MerchantResource } from './resources/merchant.js'\nimport { PayoutsResource } from './resources/payouts.js'\nimport { ProgramsResource } from './resources/programs.js'\n\nexport class AgentRef {\n readonly programs: ProgramsResource\n readonly affiliates: AffiliatesResource\n readonly conversions: ConversionsResource\n readonly payouts: PayoutsResource\n readonly flags: FlagsResource\n readonly billing: BillingResource\n readonly merchant: MerchantResource\n\n constructor(config?: AgentRefConfig) {\n const http = new HttpClient(config)\n\n this.programs = new ProgramsResource(http)\n this.affiliates = new AffiliatesResource(http)\n this.conversions = new ConversionsResource(http)\n this.payouts = new PayoutsResource(http)\n this.flags = new FlagsResource(http)\n this.billing = new BillingResource(http)\n this.merchant = new MerchantResource(http)\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAO,IAAM,gBAAN,cAA4B,MAAM;AAAA,EAKvC,YAAY,SAAiB,MAAc,QAAgB,WAAmB;AAC5E,UAAM,OAAO;AACb,SAAK,OAAO;AACZ,SAAK,OAAO;AACZ,SAAK,SAAS;AACd,SAAK,YAAY;AACjB,WAAO,eAAe,MAAM,WAAW,SAAS;AAAA,EAClD;AACF;AAEO,IAAM,YAAN,cAAwB,cAAc;AAAA,EAC3C,YAAY,SAAiB,MAAc,WAAmB;AAC5D,UAAM,SAAS,MAAM,KAAK,SAAS;AACnC,SAAK,OAAO;AAAA,EACd;AACF;AAEO,IAAM,iBAAN,cAA6B,cAAc;AAAA,EAChD,YAAY,SAAiB,MAAc,WAAmB;AAC5D,UAAM,SAAS,MAAM,KAAK,SAAS;AACnC,SAAK,OAAO;AAAA,EACd;AACF;AAEO,IAAM,kBAAN,cAA8B,cAAc;AAAA,EAGjD,YAAY,SAAiB,MAAc,WAAmB,SAAmB;AAC/E,UAAM,SAAS,MAAM,KAAK,SAAS;AACnC,SAAK,OAAO;AACZ,SAAK,UAAU;AAAA,EACjB;AACF;AAEO,IAAM,gBAAN,cAA4B,cAAc;AAAA,EAC/C,YAAY,SAAiB,MAAc,WAAmB;AAC5D,UAAM,SAAS,MAAM,KAAK,SAAS;AACnC,SAAK,OAAO;AAAA,EACd;AACF;AAEO,IAAM,gBAAN,cAA4B,cAAc;AAAA,EAC/C,YAAY,SAAiB,MAAc,WAAmB;AAC5D,UAAM,SAAS,MAAM,KAAK,SAAS;AACnC,SAAK,OAAO;AAAA,EACd;AACF;AAEO,IAAM,iBAAN,cAA6B,cAAc;AAAA,EAGhD,YAAY,SAAiB,MAAc,WAAmB,YAAoB;AAChF,UAAM,SAAS,MAAM,KAAK,SAAS;AACnC,SAAK,OAAO;AACZ,SAAK,aAAa;AAAA,EACpB;AACF;AAEO,IAAM,cAAN,cAA0B,cAAc;AAAA,EAC7C,YAAY,SAAiB,MAAc,QAAgB,WAAmB;AAC5E,UAAM,SAAS,MAAM,QAAQ,SAAS;AACtC,SAAK,OAAO;AAAA,EACd;AACF;;;ACtDA,IAAM,eAAwC,oBAAI,IAAI,CAAC,OAAO,MAAM,CAAC;AAUrE,IAAM,mBAAmB;AACzB,IAAM,kBAAkB;AACxB,IAAM,sBAAsB;AAG5B,IAAM,UAAU,OAAsC,UAAkB;AAExE,SAAS,wBAAwB,gBAA6C;AAC5E,SAAO,OAAO,mBAAmB,YAAY,eAAe,KAAK,EAAE,SAAS;AAC9E;AAEO,IAAM,aAAN,MAAiB;AAAA,EAMtB,YAAY,SAAyB,CAAC,GAAG;AACvC,QAAI,OAAO,WAAW,eAAe,CAAC,OAAO,yBAAyB;AACpE,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAEA,UAAM,SAAS,OAAO,UAAU,QAAQ,IAAI,kBAAkB;AAC9D,QAAI,CAAC,QAAQ;AACX,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAEA,SAAK,SAAS;AACd,SAAK,WAAW,OAAO,WAAW,kBAAkB,QAAQ,OAAO,EAAE;AACrE,SAAK,UAAU,OAAO,WAAW;AACjC,SAAK,aAAa,OAAO,cAAc;AAAA,EACzC;AAAA,EAEA,MAAM,QAAW,SAAqC;AACpD,UAAM,MAAM,KAAK,SAAS,QAAQ,MAAM,QAAQ,KAAK;AACrD,UAAM,SAAS,aAAa,IAAI,QAAQ,MAAM;AAC9C,UAAM,iBAAiB,QAAQ,WAAW,UAAU,wBAAwB,QAAQ,cAAc;AAClG,UAAM,WAAW,UAAU;AAC3B,UAAM,cAAc,WAAW,KAAK,aAAa,IAAI;AAErD,aAAS,UAAU,GAAG,UAAU,aAAa,WAAW;AACtD,UAAI;AAEJ,UAAI;AACF,cAAM,UAAkC;AAAA,UACtC,eAAe,UAAU,KAAK,MAAM;AAAA,UACpC,gBAAgB;AAAA,UAChB,cAAc,iBAAiB,OAAO;AAAA,QACxC;AAEA,YAAI,gBAAgB;AAClB,kBAAQ,iBAAiB,IAAI,QAAQ,eAAgB,KAAK;AAAA,QAC5D;AAEA,mBAAW,MAAM,MAAM,KAAK;AAAA,UAC1B,QAAQ,QAAQ;AAAA,UAChB;AAAA,UACA,MAAM,QAAQ,SAAS,SAAY,KAAK,UAAU,QAAQ,IAAI,IAAI;AAAA,UAClE,QAAQ,YAAY,QAAQ,KAAK,OAAO;AAAA,QAC1C,CAAC;AAAA,MACH,SAAS,OAAO;AACd,YAAI,YAAY,UAAU,cAAc,GAAG;AACzC,gBAAM,KAAK,KAAK,KAAK,QAAQ,OAAO,CAAC;AACrC;AAAA,QACF;AACA,cAAM;AAAA,MACR;AAEA,UAAI,CAAC,SAAS,IAAI;AAChB,cAAM,cAAc,MAAM,KAAK,WAAW,QAAQ;AAElD,YAAI,YAAY,KAAK,YAAY,SAAS,MAAM,KAAK,UAAU,cAAc,GAAG;AAC9E,gBAAM,QACJ,SAAS,WAAW,MAChB,KAAK,eAAe,SAAS,QAAQ,IAAI,aAAa,CAAC,IACvD,KAAK,QAAQ,OAAO;AAC1B,gBAAM,KAAK,KAAK,KAAK;AACrB;AAAA,QACF;AAEA,cAAM;AAAA,MACR;AAEA,aAAO,SAAS,KAAK;AAAA,IACvB;AAEA,UAAM,IAAI,YAAY,gCAAgC,2BAA2B,KAAK,EAAE;AAAA,EAC1F;AAAA,EAEQ,SAAS,MAAc,OAAuE;AACpG,UAAM,iBAAiB,KAAK,WAAW,GAAG,IAAI,OAAO,IAAI,IAAI;AAC7D,UAAM,MAAM,IAAI,IAAI,GAAG,KAAK,OAAO,GAAG,cAAc,EAAE;AAEtD,QAAI,OAAO;AACT,iBAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,KAAK,GAAG;AAChD,YAAI,UAAU,QAAW;AACvB,cAAI,aAAa,IAAI,KAAK,OAAO,KAAK,CAAC;AAAA,QACzC;AAAA,MACF;AAAA,IACF;AAEA,WAAO,IAAI,SAAS;AAAA,EACtB;AAAA,EAEA,MAAc,WAAW,UAA4C;AACnE,UAAM,OAAQ,MAAM,SAAS,KAAK,EAAE,MAAM,OAAO,CAAC,EAAE;AAKpD,UAAM,OAAO,KAAK,OAAO,QAAQ;AACjC,UAAM,UAAU,KAAK,OAAO,WAAW,SAAS;AAChD,UAAM,YAAY,KAAK,MAAM,aAAa;AAC1C,UAAM,UAAU,KAAK,OAAO;AAE5B,QAAI,SAAS,WAAW,IAAK,QAAO,IAAI,gBAAgB,SAAS,MAAM,WAAW,OAAO;AACzF,QAAI,SAAS,WAAW,IAAK,QAAO,IAAI,UAAU,SAAS,MAAM,SAAS;AAC1E,QAAI,SAAS,WAAW,IAAK,QAAO,IAAI,eAAe,SAAS,MAAM,SAAS;AAC/E,QAAI,SAAS,WAAW,IAAK,QAAO,IAAI,cAAc,SAAS,MAAM,SAAS;AAC9E,QAAI,SAAS,WAAW,IAAK,QAAO,IAAI,cAAc,SAAS,MAAM,SAAS;AAC9E,QAAI,SAAS,WAAW,KAAK;AAC3B,aAAO,IAAI,eAAe,SAAS,MAAM,WAAW,KAAK,oBAAoB,SAAS,QAAQ,IAAI,aAAa,CAAC,CAAC;AAAA,IACnH;AAEA,WAAO,IAAI,YAAY,SAAS,MAAM,SAAS,QAAQ,SAAS;AAAA,EAClE;AAAA,EAEQ,YAAY,QAAyB;AAC3C,WAAO,WAAW,OAAO,UAAU;AAAA,EACrC;AAAA,EAEQ,oBAAoB,aAAoC;AAC9D,QAAI,CAAC,YAAa,QAAO;AAEzB,UAAM,iBAAiB,OAAO,WAAW;AACzC,QAAI,CAAC,OAAO,MAAM,cAAc,KAAK,kBAAkB,GAAG;AACxD,aAAO,KAAK,KAAK,cAAc;AAAA,IACjC;AAEA,UAAM,SAAS,KAAK,MAAM,WAAW;AACrC,QAAI,CAAC,OAAO,MAAM,MAAM,GAAG;AACzB,YAAM,UAAU,SAAS,KAAK,IAAI;AAClC,aAAO,KAAK,IAAI,GAAG,KAAK,KAAK,UAAU,GAAI,CAAC;AAAA,IAC9C;AAEA,WAAO;AAAA,EACT;AAAA,EAEQ,eAAe,aAAoC;AACzD,WAAO,KAAK,oBAAoB,WAAW,IAAI;AAAA,EACjD;AAAA,EAEQ,KAAK,IAA2B;AACtC,WAAO,IAAI,QAAQ,CAAC,YAAY;AAC9B,iBAAW,SAAS,EAAE;AAAA,IACxB,CAAC;AAAA,EACH;AAAA,EAEQ,QAAQ,SAAyB;AACvC,WAAO,MAAM,KAAK,IAAI,GAAG,OAAO;AAAA,EAClC;AACF;;;AC1LO,IAAM,qBAAN,MAAyB;AAAA,EAC9B,YAA6B,MAAkB;AAAlB;AAAA,EAAmB;AAAA,EAEhD,KAAK,QAYqC;AACxC,WAAO,KAAK,KAAK,QAAQ,EAAE,QAAQ,OAAO,MAAM,eAAe,OAAO,OAAO,CAAC;AAAA,EAChF;AAAA,EAEA,MAAM,IAAI,IAAY,SAAqD;AACzE,UAAM,WAAW,MAAM,KAAK,KAAK,QAA4C;AAAA,MAC3E,QAAQ;AAAA,MACR,MAAM,eAAe,EAAE;AAAA,MACvB,OAAO,SAAS,UAAU,EAAE,SAAS,QAAQ,QAAQ,IAAI;AAAA,IAC3D,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,QAAQ,IAAY,SAA+C;AACvE,UAAM,WAAW,MAAM,KAAK,KAAK,QAA4C;AAAA,MAC3E,QAAQ;AAAA,MACR,MAAM,eAAe,EAAE;AAAA,MACvB,gBAAgB,SAAS;AAAA,IAC3B,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,MAAM,IAAY,MAA4B,SAA+C;AACjG,UAAM,WAAW,MAAM,KAAK,KAAK,QAA4C;AAAA,MAC3E,QAAQ;AAAA,MACR,MAAM,eAAe,EAAE;AAAA,MACvB,MAAM;AAAA,MACN,gBAAgB,SAAS;AAAA,IAC3B,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,QAAQ,IAAY,SAA+C;AACvE,UAAM,WAAW,MAAM,KAAK,KAAK,QAA4C;AAAA,MAC3E,QAAQ;AAAA,MACR,MAAM,eAAe,EAAE;AAAA,MACvB,gBAAgB,SAAS;AAAA,IAC3B,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AACF;;;ACvDO,IAAM,kBAAN,MAAsB;AAAA,EAC3B,YAA6B,MAAkB;AAAlB;AAAA,EAAmB;AAAA,EAEhD,MAAM,UAAkC;AACtC,UAAM,WAAW,MAAM,KAAK,KAAK,QAAgD;AAAA,MAC/E,QAAQ;AAAA,MACR,MAAM;AAAA,IACR,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,QAAgC;AACpC,UAAM,WAAW,MAAM,KAAK,KAAK,QAAgD;AAAA,MAC/E,QAAQ;AAAA,MACR,MAAM;AAAA,IACR,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,UAAU,MAAwD,SAAmD;AACzH,UAAM,WAAW,MAAM,KAAK,KAAK,QAAgD;AAAA,MAC/E,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,MACN,gBAAgB,SAAS;AAAA,IAC3B,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AACF;;;AC5BO,IAAM,sBAAN,MAA0B;AAAA,EAC/B,YAA6B,MAAkB;AAAlB;AAAA,EAAmB;AAAA,EAEhD,KAAK,QAasC;AACzC,WAAO,KAAK,KAAK,QAAQ,EAAE,QAAQ,OAAO,MAAM,gBAAgB,OAAO,OAAO,CAAC;AAAA,EACjF;AAAA,EAEA,MAAM,MAAM,QAAkG;AAC5G,UAAM,WAAW,MAAM,KAAK,KAAK,QAAkD;AAAA,MACjF,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,OAAO;AAAA,IACT,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,OAAO,QAAoD;AAC/D,UAAM,WAAW,MAAM,KAAK,KAAK,QAA+C;AAAA,MAC9E,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,OAAO;AAAA,IACT,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AACF;;;ACrCO,IAAM,gBAAN,MAAoB;AAAA,EACzB,YAA6B,MAAkB;AAAlB;AAAA,EAAmB;AAAA,EAEhD,KAAK,QASgC;AACnC,WAAO,KAAK,KAAK,QAAQ,EAAE,QAAQ,OAAO,MAAM,UAAU,OAAO,OAAO,CAAC;AAAA,EAC3E;AAAA,EAEA,MAAM,QAA4B;AAChC,UAAM,WAAW,MAAM,KAAK,KAAK,QAA4C;AAAA,MAC3E,QAAQ;AAAA,MACR,MAAM;AAAA,IACR,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,QAAQ,IAAY,MAAyB,SAA0C;AAC3F,UAAM,WAAW,MAAM,KAAK,KAAK,QAAuC;AAAA,MACtE,QAAQ;AAAA,MACR,MAAM,UAAU,EAAE;AAAA,MAClB,MAAM;AAAA,MACN,gBAAgB,SAAS;AAAA,IAC3B,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AACF;;;ACxBO,IAAM,mBAAN,MAAuB;AAAA,EAC5B,YAA6B,MAAkB;AAAlB;AAAA,EAAmB;AAAA,EAEhD,MAAM,MAAyB;AAC7B,UAAM,WAAW,MAAM,KAAK,KAAK,QAA2C;AAAA,MAC1E,QAAQ;AAAA,MACR,MAAM;AAAA,IACR,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,OAAO,MAA+C;AAC1D,UAAM,WAAW,MAAM,KAAK,KAAK,QAA2C;AAAA,MAC1E,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,IACR,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,gBAA+C;AACnD,UAAM,WAAW,MAAM,KAAK,KAAK,QAAuD;AAAA,MACtF,QAAQ;AAAA,MACR,MAAM;AAAA,IACR,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,eAA8C;AAClD,UAAM,WAAW,MAAM,KAAK,KAAK,QAAuD;AAAA,MACtF,QAAQ;AAAA,MACR,MAAM;AAAA,IACR,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,gBAAqC;AACzC,UAAM,WAAW,MAAM,KAAK,KAAK,QAA6C;AAAA,MAC5E,QAAQ;AAAA,MACR,MAAM;AAAA,IACR,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,iBAAiB,MAAmD;AACxE,UAAM,WAAW,MAAM,KAAK,KAAK,QAA6C;AAAA,MAC5E,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,IACR,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,mBAAqD;AACzD,UAAM,WAAW,MAAM,KAAK,KAAK,QAA0D;AAAA,MACzF,QAAQ;AAAA,MACR,MAAM;AAAA,IACR,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,oBAAoB,MAA6E;AACrG,UAAM,WAAW,MAAM,KAAK,KAAK,QAA0D;AAAA,MACzF,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,IACR,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AACF;;;AC9EO,IAAM,kBAAN,MAAsB;AAAA,EAC3B,YAA6B,MAAkB;AAAlB;AAAA,EAAmB;AAAA,EAEhD,KAAK,QAakC;AACrC,WAAO,KAAK,KAAK,QAAQ,EAAE,QAAQ,OAAO,MAAM,YAAY,OAAO,OAAO,CAAC;AAAA,EAC7E;AAAA,EAEA,YAAY,QAOqC;AAC/C,WAAO,KAAK,KAAK,QAAQ,EAAE,QAAQ,OAAO,MAAM,oBAAoB,OAAO,OAAO,CAAC;AAAA,EACrF;AAAA,EAEA,MAAM,MAAM,QAA8F;AACxG,UAAM,WAAW,MAAM,KAAK,KAAK,QAA8C;AAAA,MAC7E,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,OAAO;AAAA,IACT,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,OAAO,MAA0B,SAA6D;AAClG,UAAM,WAAW,MAAM,KAAK,KAAK,QAA0D;AAAA,MACzF,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,MACN,gBAAgB,SAAS;AAAA,IAC3B,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AACF;;;ACpCO,IAAM,mBAAN,MAAuB;AAAA,EAC5B,YAA6B,MAAkB;AAAlB;AAAA,EAAmB;AAAA,EAEhD,KAAK,QAOmC;AACtC,WAAO,KAAK,KAAK,QAAQ,EAAE,QAAQ,OAAO,MAAM,aAAa,OAAO,OAAO,CAAC;AAAA,EAC9E;AAAA,EAEA,OAAO,QAAQ,QAEa;AAC1B,QAAI,OAAO;AACX,UAAM,WAAW,QAAQ,YAAY;AAErC,WAAO,MAAM;AACX,YAAM,WAAW,MAAM,KAAK,KAAK,EAAE,MAAM,OAAO,SAAS,CAAC;AAC1D,aAAO,SAAS;AAEhB,UAAI,CAAC,SAAS,KAAK,SAAS;AAC1B;AAAA,MACF;AAEA,cAAQ;AAAA,IACV;AAAA,EACF;AAAA,EAEA,MAAM,IAAI,IAA8B;AACtC,UAAM,WAAW,MAAM,KAAK,KAAK,QAA0C;AAAA,MACzE,QAAQ;AAAA,MACR,MAAM,aAAa,EAAE;AAAA,IACvB,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,OAAO,MAA2B,SAA6C;AACnF,UAAM,WAAW,MAAM,KAAK,KAAK,QAA0C;AAAA,MACzE,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,MACN,gBAAgB,SAAS;AAAA,IAC3B,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,OAAO,IAAY,MAA6C;AACpE,UAAM,WAAW,MAAM,KAAK,KAAK,QAA0C;AAAA,MACzE,QAAQ;AAAA,MACR,MAAM,aAAa,EAAE;AAAA,MACrB,MAAM;AAAA,IACR,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,OAAO,IAA8B;AACzC,UAAM,WAAW,MAAM,KAAK,KAAK,QAA0C;AAAA,MACzE,QAAQ;AAAA,MACR,MAAM,aAAa,EAAE;AAAA,IACvB,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,MAAM,IAAY,QAAqD;AAC3E,UAAM,WAAW,MAAM,KAAK,KAAK,QAA+C;AAAA,MAC9E,QAAQ;AAAA,MACR,MAAM,aAAa,EAAE;AAAA,MACrB,OAAO;AAAA,IACT,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,eACE,IACA,QACuC;AACvC,WAAO,KAAK,KAAK,QAAQ;AAAA,MACvB,QAAQ;AAAA,MACR,MAAM,aAAa,EAAE;AAAA,MACrB,OAAO;AAAA,IACT,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,YAAY,IAA+B;AAC/C,UAAM,WAAW,MAAM,KAAK,KAAK,QAA2C;AAAA,MAC1E,QAAQ;AAAA,MACR,MAAM,aAAa,EAAE;AAAA,IACvB,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,aAAa,IAAY,MAA0B,SAA4C;AACnG,UAAM,WAAW,MAAM,KAAK,KAAK,QAAyC;AAAA,MACxE,QAAQ;AAAA,MACR,MAAM,aAAa,EAAE;AAAA,MACrB,MAAM;AAAA,MACN,gBAAgB,SAAS;AAAA,IAC3B,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,aACJ,IACA,MACA,SACiB;AACjB,UAAM,WAAW,MAAM,KAAK,KAAK,QAAyC;AAAA,MACxE,QAAQ;AAAA,MACR,MAAM,aAAa,EAAE;AAAA,MACrB,MAAM;AAAA,MACN,gBAAgB,SAAS;AAAA,IAC3B,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,YAAY,IAA+B;AAC/C,UAAM,WAAW,MAAM,KAAK,KAAK,QAA2C;AAAA,MAC1E,QAAQ;AAAA,MACR,MAAM,aAAa,EAAE;AAAA,IACvB,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,aAAa,UAAmC;AACpD,UAAM,WAAW,MAAM,KAAK,KAAK,QAAyC;AAAA,MACxE,QAAQ;AAAA,MACR,MAAM,YAAY,QAAQ;AAAA,IAC5B,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,kBAAkB,IAAY,MAAwE;AAC1G,UAAM,WAAW,MAAM,KAAK,KAAK,QAA0D;AAAA,MACzF,QAAQ;AAAA,MACR,MAAM,aAAa,EAAE;AAAA,MACrB,MAAM;AAAA,IACR,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AACF;;;ACrJO,IAAM,WAAN,MAAe;AAAA,EASpB,YAAY,QAAyB;AACnC,UAAM,OAAO,IAAI,WAAW,MAAM;AAElC,SAAK,WAAW,IAAI,iBAAiB,IAAI;AACzC,SAAK,aAAa,IAAI,mBAAmB,IAAI;AAC7C,SAAK,cAAc,IAAI,oBAAoB,IAAI;AAC/C,SAAK,UAAU,IAAI,gBAAgB,IAAI;AACvC,SAAK,QAAQ,IAAI,cAAc,IAAI;AACnC,SAAK,UAAU,IAAI,gBAAgB,IAAI;AACvC,SAAK,WAAW,IAAI,iBAAiB,IAAI;AAAA,EAC3C;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts","../src/errors.ts","../src/http.ts","../src/resources/affiliates.ts","../src/resources/billing.ts","../src/resources/conversions.ts","../src/resources/flags.ts","../src/resources/merchant.ts","../src/resources/payouts.ts","../src/resources/programs.ts","../src/resources/webhooks.ts","../src/client.ts"],"sourcesContent":["export { AgentRef } from './client.js'\nexport {\n AgentRefError,\n AuthError,\n ConflictError,\n ForbiddenError,\n NotFoundError,\n RateLimitError,\n ServerError,\n ValidationError,\n} from './errors.js'\nexport type {\n AgentRefConfig,\n Affiliate,\n AffiliateSortBy,\n AffiliateStatus,\n BillingStatus,\n BillingTier,\n BillingTierId,\n CommissionType,\n CreateInviteParams,\n CreatePayoutParams,\n Conversion,\n ConversionStats,\n ConversionStatus,\n Coupon,\n CreateCouponParams,\n CreateProgramParams,\n Flag,\n FlagStats,\n FlagStatus,\n FlagType,\n Invite,\n Merchant,\n MutationOptions,\n NotificationPreferences,\n PaginatedResponse,\n PaginationMeta,\n PayoutInfo,\n PendingAffiliate,\n Payout,\n ProgramMarketplaceVisibility,\n ProgramMarketplaceStatus,\n ProgramReadiness,\n ProgramDetail,\n PayoutStats,\n PayoutStatus,\n Program,\n ProgramStats,\n ProgramStatus,\n SortOrder,\n UpdateMerchantParams,\n UpdateNotificationPreferencesParams,\n UpdatePayoutInfoParams,\n UpdateProgramMarketplaceParams,\n ResolveFlagParams,\n UpdateProgramParams,\n BillingRequirementStatus,\n ConnectProgramStripeParams,\n ConnectProgramStripeResponse,\n DisconnectProgramStripeResponse,\n ProgramDomainVerificationInitResponse,\n ProgramDomainVerificationStatusResponse,\n StripeConnectMethod,\n SuccessResponse,\n WebhookEventType,\n WebhookEndpoint,\n WebhookEndpointStatus,\n CreateWebhookEndpointParams,\n UpdateWebhookEndpointParams,\n WebhookSecretResponse,\n} from './types/index.js'\n","export class AgentRefError extends Error {\n readonly code: string\n readonly status: number\n readonly requestId: string\n\n constructor(message: string, code: string, status: number, requestId: string) {\n super(message)\n this.name = 'AgentRefError'\n this.code = code\n this.status = status\n this.requestId = requestId\n Object.setPrototypeOf(this, new.target.prototype)\n }\n}\n\nexport class AuthError extends AgentRefError {\n constructor(message: string, code: string, requestId: string) {\n super(message, code, 401, requestId)\n this.name = 'AuthError'\n }\n}\n\nexport class ForbiddenError extends AgentRefError {\n constructor(message: string, code: string, requestId: string) {\n super(message, code, 403, requestId)\n this.name = 'ForbiddenError'\n }\n}\n\nexport class ValidationError extends AgentRefError {\n readonly details: unknown\n\n constructor(message: string, code: string, requestId: string, details?: unknown) {\n super(message, code, 400, requestId)\n this.name = 'ValidationError'\n this.details = details\n }\n}\n\nexport class NotFoundError extends AgentRefError {\n constructor(message: string, code: string, requestId: string) {\n super(message, code, 404, requestId)\n this.name = 'NotFoundError'\n }\n}\n\nexport class ConflictError extends AgentRefError {\n constructor(message: string, code: string, requestId: string) {\n super(message, code, 409, requestId)\n this.name = 'ConflictError'\n }\n}\n\nexport class RateLimitError extends AgentRefError {\n readonly retryAfter: number\n\n constructor(message: string, code: string, requestId: string, retryAfter: number) {\n super(message, code, 429, requestId)\n this.name = 'RateLimitError'\n this.retryAfter = retryAfter\n }\n}\n\nexport class ServerError extends AgentRefError {\n constructor(message: string, code: string, status: number, requestId: string) {\n super(message, code, status, requestId)\n this.name = 'ServerError'\n }\n}\n","import {\n AgentRefError,\n AuthError,\n ConflictError,\n ForbiddenError,\n NotFoundError,\n RateLimitError,\n ServerError,\n ValidationError,\n} from './errors.js'\nimport type { AgentRefConfig } from './types/index.js'\n\nexport type HttpMethod = 'GET' | 'HEAD' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'\n\nconst SAFE_METHODS: ReadonlySet<HttpMethod> = new Set(['GET', 'HEAD'])\n\nexport interface RequestOptions {\n method: HttpMethod\n path: string\n body?: unknown\n query?: Record<string, string | number | boolean | undefined>\n idempotencyKey?: string\n}\n\nconst DEFAULT_BASE_URL = 'https://www.agentref.dev/api/v1'\nconst DEFAULT_TIMEOUT = 30_000\nconst DEFAULT_MAX_RETRIES = 2\n\ndeclare const __SDK_VERSION__: string\nconst VERSION = typeof __SDK_VERSION__ === 'string' ? __SDK_VERSION__ : '0.0.0'\n\nfunction hasUsableIdempotencyKey(idempotencyKey: string | undefined): boolean {\n return typeof idempotencyKey === 'string' && idempotencyKey.trim().length > 0\n}\n\nexport class HttpClient {\n private readonly apiKey: string\n private readonly baseUrl: string\n private readonly timeout: number\n private readonly maxRetries: number\n\n constructor(config: AgentRefConfig = {}) {\n if (typeof window !== 'undefined' && !config.dangerouslyAllowBrowser) {\n throw new Error(\n '[AgentRef] Refusing to initialize in browser context. API keys must not be exposed client-side. Use a server-side proxy to call the AgentRef API instead. To override: set dangerouslyAllowBrowser: true (understand the security implications first).'\n )\n }\n\n const apiKey = config.apiKey ?? process.env['AGENTREF_API_KEY']\n if (!apiKey) {\n throw new Error(\n '[AgentRef] API key is required. Pass it as apiKey or set the AGENTREF_API_KEY environment variable.'\n )\n }\n\n this.apiKey = apiKey\n this.baseUrl = (config.baseUrl ?? DEFAULT_BASE_URL).replace(/\\/$/, '')\n this.timeout = config.timeout ?? DEFAULT_TIMEOUT\n this.maxRetries = config.maxRetries ?? DEFAULT_MAX_RETRIES\n }\n\n async request<T>(options: RequestOptions): Promise<T> {\n const url = this.buildUrl(options.path, options.query)\n const isSafe = SAFE_METHODS.has(options.method)\n const hasIdempotency = options.method === 'POST' && hasUsableIdempotencyKey(options.idempotencyKey)\n const canRetry = isSafe || hasIdempotency\n const maxAttempts = canRetry ? this.maxRetries + 1 : 1\n\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n let response: Response\n\n try {\n const headers: Record<string, string> = {\n Authorization: `Bearer ${this.apiKey}`,\n 'Content-Type': 'application/json',\n 'User-Agent': `agentref-node/${VERSION}`,\n }\n\n if (hasIdempotency) {\n headers['Idempotency-Key'] = options.idempotencyKey!.trim()\n }\n\n response = await fetch(url, {\n method: options.method,\n headers,\n body: options.body !== undefined ? JSON.stringify(options.body) : undefined,\n signal: AbortSignal.timeout(this.timeout),\n })\n } catch (error) {\n if (canRetry && attempt < maxAttempts - 1) {\n await this.wait(this.backoff(attempt))\n continue\n }\n throw error\n }\n\n if (!response.ok) {\n const parsedError = await this.parseError(response)\n\n if (canRetry && this.isRetryable(response.status) && attempt < maxAttempts - 1) {\n const delay =\n response.status === 429\n ? this.retryAfterToMs(response.headers.get('Retry-After'))\n : this.backoff(attempt)\n await this.wait(delay)\n continue\n }\n\n throw parsedError\n }\n\n return response.json() as Promise<T>\n }\n\n throw new ServerError('Request failed after retries', 'REQUEST_RETRY_EXHAUSTED', 500, '')\n }\n\n private buildUrl(path: string, query?: Record<string, string | number | boolean | undefined>): string {\n const normalizedPath = path.startsWith('/') ? path : `/${path}`\n const url = new URL(`${this.baseUrl}${normalizedPath}`)\n\n if (query) {\n for (const [key, value] of Object.entries(query)) {\n if (value !== undefined) {\n url.searchParams.set(key, String(value))\n }\n }\n }\n\n return url.toString()\n }\n\n private async parseError(response: Response): Promise<AgentRefError> {\n const json = (await response.json().catch(() => ({}))) as {\n error?: { code?: string; message?: string; details?: unknown }\n meta?: { requestId?: string }\n }\n\n const code = json.error?.code ?? 'UNKNOWN_ERROR'\n const message = json.error?.message ?? response.statusText\n const requestId = json.meta?.requestId ?? ''\n const details = json.error?.details\n\n if (response.status === 400) return new ValidationError(message, code, requestId, details)\n if (response.status === 401) return new AuthError(message, code, requestId)\n if (response.status === 403) return new ForbiddenError(message, code, requestId)\n if (response.status === 404) return new NotFoundError(message, code, requestId)\n if (response.status === 409) return new ConflictError(message, code, requestId)\n if (response.status === 429) {\n return new RateLimitError(message, code, requestId, this.retryAfterToSeconds(response.headers.get('Retry-After')))\n }\n\n return new ServerError(message, code, response.status, requestId)\n }\n\n private isRetryable(status: number): boolean {\n return status === 429 || status >= 500\n }\n\n private retryAfterToSeconds(headerValue: string | null): number {\n if (!headerValue) return 60\n\n const numericSeconds = Number(headerValue)\n if (!Number.isNaN(numericSeconds) && numericSeconds >= 0) {\n return Math.ceil(numericSeconds)\n }\n\n const asDate = Date.parse(headerValue)\n if (!Number.isNaN(asDate)) {\n const deltaMs = asDate - Date.now()\n return Math.max(0, Math.ceil(deltaMs / 1000))\n }\n\n return 60\n }\n\n private retryAfterToMs(headerValue: string | null): number {\n return this.retryAfterToSeconds(headerValue) * 1000\n }\n\n private wait(ms: number): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(resolve, ms)\n })\n }\n\n private backoff(attempt: number): number {\n return 500 * Math.pow(2, attempt)\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type { Affiliate, AffiliateSortBy, AffiliateStatus, MutationOptions, PaginatedResponse, SortOrder } from '../types/index.js'\n\nexport class AffiliatesResource {\n constructor(private readonly http: HttpClient) {}\n\n list(params?: {\n programId?: string\n includeBlocked?: boolean\n search?: string\n sortBy?: AffiliateSortBy\n sortOrder?: SortOrder\n status?: AffiliateStatus\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n }): Promise<PaginatedResponse<Affiliate>> {\n return this.http.request({ method: 'GET', path: '/affiliates', query: params })\n }\n\n async get(id: string, options?: { include?: 'stats' }): Promise<Affiliate> {\n const envelope = await this.http.request<{ data: Affiliate; meta: unknown }>({\n method: 'GET',\n path: `/affiliates/${id}`,\n query: options?.include ? { include: options.include } : undefined,\n })\n return envelope.data\n }\n\n async approve(id: string, options?: MutationOptions): Promise<Affiliate> {\n const envelope = await this.http.request<{ data: Affiliate; meta: unknown }>({\n method: 'POST',\n path: `/affiliates/${id}/approve`,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n\n async block(id: string, data?: { reason?: string }, options?: MutationOptions): Promise<Affiliate> {\n const envelope = await this.http.request<{ data: Affiliate; meta: unknown }>({\n method: 'POST',\n path: `/affiliates/${id}/block`,\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n\n async unblock(id: string, options?: MutationOptions): Promise<Affiliate> {\n const envelope = await this.http.request<{ data: Affiliate; meta: unknown }>({\n method: 'POST',\n path: `/affiliates/${id}/unblock`,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type { BillingStatus, BillingTier, MutationOptions } from '../types/index.js'\n\nexport class BillingResource {\n constructor(private readonly http: HttpClient) {}\n\n async current(): Promise<BillingStatus> {\n const envelope = await this.http.request<{ data: BillingStatus; meta: unknown }>({\n method: 'GET',\n path: '/billing',\n })\n return envelope.data\n }\n\n async tiers(): Promise<BillingTier[]> {\n const envelope = await this.http.request<{ data: BillingTier[]; meta: unknown }>({\n method: 'GET',\n path: '/billing/tiers',\n })\n return envelope.data\n }\n\n async subscribe(data: { tier: 'starter' | 'growth' | 'pro' | 'scale' }, options?: MutationOptions): Promise<BillingStatus> {\n const envelope = await this.http.request<{ data: BillingStatus; meta: unknown }>({\n method: 'POST',\n path: '/billing/subscribe',\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type { Conversion, ConversionStats, PaginatedResponse } from '../types/index.js'\n\nexport class ConversionsResource {\n constructor(private readonly http: HttpClient) {}\n\n list(params?: {\n programId?: string\n affiliateId?: string\n status?: string\n startDate?: string\n endDate?: string\n from?: string\n to?: string\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n }): Promise<PaginatedResponse<Conversion>> {\n return this.http.request({ method: 'GET', path: '/conversions', query: params })\n }\n\n async stats(params?: { programId?: string; period?: '7d' | '30d' | '90d' | 'all' }): Promise<ConversionStats> {\n const envelope = await this.http.request<{ data: ConversionStats; meta: unknown }>({\n method: 'GET',\n path: '/conversions/stats',\n query: params,\n })\n return envelope.data\n }\n\n async recent(params?: { limit?: number }): Promise<Conversion[]> {\n const envelope = await this.http.request<{ data: Conversion[]; meta: unknown }>({\n method: 'GET',\n path: '/conversions/recent',\n query: params,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type { Flag, FlagStats, MutationOptions, PaginatedResponse, ResolveFlagParams } from '../types/index.js'\n\nexport class FlagsResource {\n constructor(private readonly http: HttpClient) {}\n\n list(params?: {\n status?: string\n type?: string\n affiliateId?: string\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n }): Promise<PaginatedResponse<Flag>> {\n return this.http.request({ method: 'GET', path: '/flags', query: params })\n }\n\n async stats(): Promise<FlagStats> {\n const envelope = await this.http.request<{ data: FlagStats; meta: unknown }>({\n method: 'GET',\n path: '/flags/stats',\n })\n return envelope.data\n }\n\n async resolve(id: string, data: ResolveFlagParams, options?: MutationOptions): Promise<Flag> {\n const envelope = await this.http.request<{ data: Flag; meta: unknown }>({\n method: 'POST',\n path: `/flags/${id}/resolve`,\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type {\n Merchant,\n NotificationPreferences,\n PayoutInfo,\n UpdateMerchantParams,\n UpdateNotificationPreferencesParams,\n UpdatePayoutInfoParams,\n} from '../types/index.js'\n\nexport class MerchantResource {\n constructor(private readonly http: HttpClient) {}\n\n async get(): Promise<Merchant> {\n const envelope = await this.http.request<{ data: Merchant; meta: unknown }>({\n method: 'GET',\n path: '/merchant',\n })\n return envelope.data\n }\n\n async update(data: UpdateMerchantParams): Promise<Merchant> {\n const envelope = await this.http.request<{ data: Merchant; meta: unknown }>({\n method: 'PATCH',\n path: '/merchant',\n body: data,\n })\n return envelope.data\n }\n\n async getPayoutInfo(): Promise<PayoutInfo> {\n const envelope = await this.http.request<{ data: PayoutInfo; meta: unknown }>({\n method: 'GET',\n path: '/me/payout-info',\n })\n return envelope.data\n }\n\n async updatePayoutInfo(data: UpdatePayoutInfoParams): Promise<PayoutInfo> {\n const envelope = await this.http.request<{ data: PayoutInfo; meta: unknown }>({\n method: 'PATCH',\n path: '/me/payout-info',\n body: data,\n })\n return envelope.data\n }\n\n async getNotifications(): Promise<NotificationPreferences> {\n const envelope = await this.http.request<{ data: NotificationPreferences; meta: unknown }>({\n method: 'GET',\n path: '/merchant/notifications',\n })\n return envelope.data\n }\n\n async updateNotifications(data: UpdateNotificationPreferencesParams): Promise<NotificationPreferences> {\n const envelope = await this.http.request<{ data: NotificationPreferences; meta: unknown }>({\n method: 'PUT',\n path: '/merchant/notifications',\n body: data,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type { CreatePayoutParams, MutationOptions, PaginatedResponse, PendingAffiliate, Payout, PayoutStats, PayoutStatus } from '../types/index.js'\n\nexport class PayoutsResource {\n constructor(private readonly http: HttpClient) {}\n\n list(params?: {\n programId?: string\n affiliateId?: string\n status?: PayoutStatus\n startDate?: string\n endDate?: string\n from?: string\n to?: string\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n }): Promise<PaginatedResponse<Payout>> {\n return this.http.request({ method: 'GET', path: '/payouts', query: params })\n }\n\n listPending(params?: {\n programId?: string\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n }): Promise<PaginatedResponse<PendingAffiliate>> {\n return this.http.request({ method: 'GET', path: '/payouts/pending', query: params })\n }\n\n async stats(params?: { programId?: string; period?: '7d' | '30d' | '90d' | 'all' }): Promise<PayoutStats> {\n const envelope = await this.http.request<{ data: PayoutStats; meta: unknown }>({\n method: 'GET',\n path: '/payouts/stats',\n query: params,\n })\n return envelope.data\n }\n\n async create(data: CreatePayoutParams, options?: MutationOptions): Promise<Record<string, unknown>> {\n const envelope = await this.http.request<{ data: Record<string, unknown>; meta: unknown }>({\n method: 'POST',\n path: '/payouts',\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type {\n Affiliate,\n Coupon,\n ConnectProgramStripeParams,\n ConnectProgramStripeResponse,\n CreateCouponParams,\n CreateInviteParams,\n CreateProgramParams,\n DisconnectProgramStripeResponse,\n Invite,\n MutationOptions,\n PaginatedResponse,\n Program,\n ProgramDetail,\n ProgramDomainVerificationInitResponse,\n ProgramDomainVerificationStatusResponse,\n ProgramStats,\n SuccessResponse,\n ProgramStatus,\n UpdateProgramMarketplaceParams,\n UpdateProgramParams,\n} from '../types/index.js'\n\nexport class ProgramsResource {\n constructor(private readonly http: HttpClient) {}\n\n list(params?: {\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n status?: ProgramStatus\n }): Promise<PaginatedResponse<Program>> {\n return this.http.request({ method: 'GET', path: '/programs', query: params })\n }\n\n async *listAll(params?: {\n pageSize?: number\n }): AsyncGenerator<Program> {\n let page = 1\n const pageSize = params?.pageSize ?? 100\n\n while (true) {\n const response = await this.list({ page, limit: pageSize })\n yield* response.data\n\n if (!response.meta.hasMore) {\n break\n }\n\n page += 1\n }\n }\n\n async get(id: string): Promise<ProgramDetail> {\n const envelope = await this.http.request<{ data: ProgramDetail; meta: unknown }>({\n method: 'GET',\n path: `/programs/${id}`,\n })\n return envelope.data\n }\n\n async create(data: CreateProgramParams, options?: MutationOptions): Promise<Program> {\n const envelope = await this.http.request<{ data: Program; meta: unknown }>({\n method: 'POST',\n path: '/programs',\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n\n async update(id: string, data: UpdateProgramParams): Promise<Program> {\n const envelope = await this.http.request<{ data: Program; meta: unknown }>({\n method: 'PATCH',\n path: `/programs/${id}`,\n body: data,\n })\n return envelope.data\n }\n\n async delete(id: string): Promise<Program> {\n const envelope = await this.http.request<{ data: Program; meta: unknown }>({\n method: 'DELETE',\n path: `/programs/${id}`,\n })\n return envelope.data\n }\n\n async stats(id: string, params?: { period?: string }): Promise<ProgramStats> {\n const envelope = await this.http.request<{ data: ProgramStats; meta: unknown }>({\n method: 'GET',\n path: `/programs/${id}/stats`,\n query: params,\n })\n return envelope.data\n }\n\n listAffiliates(\n id: string,\n params?: { includeBlocked?: boolean; cursor?: string; limit?: number; page?: number; pageSize?: number; offset?: number }\n ): Promise<PaginatedResponse<Affiliate>> {\n return this.http.request({\n method: 'GET',\n path: `/programs/${id}/affiliates`,\n query: params,\n })\n }\n\n async listCoupons(id: string): Promise<Coupon[]> {\n const envelope = await this.http.request<{ data: Coupon[]; meta: unknown }>({\n method: 'GET',\n path: `/programs/${id}/coupons`,\n })\n return envelope.data\n }\n\n async createCoupon(id: string, data: CreateCouponParams, options?: MutationOptions): Promise<Coupon> {\n const envelope = await this.http.request<{ data: Coupon; meta: unknown }>({\n method: 'POST',\n path: `/programs/${id}/coupons`,\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n\n async createInvite(\n id: string,\n data: CreateInviteParams,\n options?: MutationOptions\n ): Promise<Invite> {\n const envelope = await this.http.request<{ data: Invite; meta: unknown }>({\n method: 'POST',\n path: `/programs/${id}/invites`,\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n\n async listInvites(id: string): Promise<Invite[]> {\n const envelope = await this.http.request<{ data: Invite[]; meta: unknown }>({\n method: 'GET',\n path: `/programs/${id}/invites`,\n })\n return envelope.data\n }\n\n async deleteCoupon(couponId: string): Promise<Coupon> {\n const envelope = await this.http.request<{ data: Coupon; meta: unknown }>({\n method: 'DELETE',\n path: `/coupons/${couponId}`,\n })\n return envelope.data\n }\n\n async updateMarketplace(id: string, data: UpdateProgramMarketplaceParams): Promise<Record<string, unknown>> {\n const envelope = await this.http.request<{ data: Record<string, unknown>; meta: unknown }>({\n method: 'PATCH',\n path: `/programs/${id}/marketplace`,\n body: data,\n })\n return envelope.data\n }\n\n async connectStripe(id: string, data?: ConnectProgramStripeParams): Promise<ConnectProgramStripeResponse> {\n const envelope = await this.http.request<{ data: ConnectProgramStripeResponse; meta: unknown }>({\n method: 'POST',\n path: `/programs/${id}/connect-stripe`,\n body: data,\n })\n return envelope.data\n }\n\n async disconnectStripe(id: string): Promise<DisconnectProgramStripeResponse> {\n const envelope = await this.http.request<{ data: DisconnectProgramStripeResponse; meta: unknown }>({\n method: 'DELETE',\n path: `/programs/${id}/connect-stripe`,\n })\n return envelope.data\n }\n\n async verifyDomain(id: string, data: { domain: string }): Promise<ProgramDomainVerificationInitResponse> {\n const envelope = await this.http.request<{ data: ProgramDomainVerificationInitResponse; meta: unknown }>({\n method: 'POST',\n path: `/programs/${id}/verify-domain`,\n body: data,\n })\n return envelope.data\n }\n\n async removeDomainVerification(id: string): Promise<SuccessResponse> {\n const envelope = await this.http.request<{ data: SuccessResponse; meta: unknown }>({\n method: 'DELETE',\n path: `/programs/${id}/verify-domain`,\n })\n return envelope.data\n }\n\n async getDomainStatus(id: string): Promise<ProgramDomainVerificationStatusResponse> {\n const envelope = await this.http.request<{ data: ProgramDomainVerificationStatusResponse; meta: unknown }>({\n method: 'GET',\n path: `/programs/${id}/verify-domain/status`,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type {\n CreateWebhookEndpointParams,\n SuccessResponse,\n UpdateWebhookEndpointParams,\n WebhookEndpoint,\n WebhookSecretResponse,\n} from '../types/index.js'\n\nexport class WebhooksResource {\n constructor(private readonly http: HttpClient) {}\n\n async list(params?: { programId?: string }): Promise<WebhookEndpoint[]> {\n const envelope = await this.http.request<{ data: WebhookEndpoint[]; meta: unknown }>({\n method: 'GET',\n path: '/webhooks',\n query: params,\n })\n return envelope.data\n }\n\n async create(data: CreateWebhookEndpointParams): Promise<WebhookSecretResponse> {\n const envelope = await this.http.request<{ data: WebhookSecretResponse; meta: unknown }>({\n method: 'POST',\n path: '/webhooks',\n body: data,\n })\n return envelope.data\n }\n\n async get(id: string): Promise<WebhookEndpoint> {\n const envelope = await this.http.request<{ data: WebhookEndpoint; meta: unknown }>({\n method: 'GET',\n path: `/webhooks/${id}`,\n })\n return envelope.data\n }\n\n async update(id: string, data: UpdateWebhookEndpointParams): Promise<WebhookEndpoint> {\n const envelope = await this.http.request<{ data: WebhookEndpoint; meta: unknown }>({\n method: 'PATCH',\n path: `/webhooks/${id}`,\n body: data,\n })\n return envelope.data\n }\n\n async delete(id: string): Promise<SuccessResponse> {\n const envelope = await this.http.request<{ data: SuccessResponse; meta: unknown }>({\n method: 'DELETE',\n path: `/webhooks/${id}`,\n })\n return envelope.data\n }\n\n async rotateSecret(id: string): Promise<WebhookSecretResponse> {\n const envelope = await this.http.request<{ data: WebhookSecretResponse; meta: unknown }>({\n method: 'POST',\n path: `/webhooks/${id}/rotate-secret`,\n })\n return envelope.data\n }\n}\n","import { HttpClient } from './http.js'\nimport type { AgentRefConfig } from './types/index.js'\nimport { AffiliatesResource } from './resources/affiliates.js'\nimport { BillingResource } from './resources/billing.js'\nimport { ConversionsResource } from './resources/conversions.js'\nimport { FlagsResource } from './resources/flags.js'\nimport { MerchantResource } from './resources/merchant.js'\nimport { PayoutsResource } from './resources/payouts.js'\nimport { ProgramsResource } from './resources/programs.js'\nimport { WebhooksResource } from './resources/webhooks.js'\n\nexport class AgentRef {\n readonly programs: ProgramsResource\n readonly affiliates: AffiliatesResource\n readonly conversions: ConversionsResource\n readonly payouts: PayoutsResource\n readonly flags: FlagsResource\n readonly billing: BillingResource\n readonly merchant: MerchantResource\n readonly webhooks: WebhooksResource\n\n constructor(config?: AgentRefConfig) {\n const http = new HttpClient(config)\n\n this.programs = new ProgramsResource(http)\n this.affiliates = new AffiliatesResource(http)\n this.conversions = new ConversionsResource(http)\n this.payouts = new PayoutsResource(http)\n this.flags = new FlagsResource(http)\n this.billing = new BillingResource(http)\n this.merchant = new MerchantResource(http)\n this.webhooks = new WebhooksResource(http)\n }\n}\n"],"mappings":"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","names":[]}