@iann29/rastro 0.4.0 → 0.5.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.
Files changed (92) hide show
  1. package/README.md +122 -17
  2. package/agent/integration.md +26 -10
  3. package/agent/manifest.json +10 -5
  4. package/agent/manifest.schema.json +14 -5
  5. package/dist/client/federation.d.ts +28 -8
  6. package/dist/client/federation.d.ts.map +1 -1
  7. package/dist/client/federation.js +12 -1
  8. package/dist/client/federation.js.map +1 -1
  9. package/dist/client/index.d.ts +262 -9
  10. package/dist/client/index.d.ts.map +1 -1
  11. package/dist/client/index.js +119 -2
  12. package/dist/client/index.js.map +1 -1
  13. package/dist/component/_generated/api.d.ts +6 -0
  14. package/dist/component/_generated/api.d.ts.map +1 -1
  15. package/dist/component/_generated/api.js.map +1 -1
  16. package/dist/component/_generated/component.d.ts +71 -1
  17. package/dist/component/_generated/component.d.ts.map +1 -1
  18. package/dist/component/constants.d.ts +2 -0
  19. package/dist/component/constants.d.ts.map +1 -1
  20. package/dist/component/constants.js +7 -0
  21. package/dist/component/constants.js.map +1 -1
  22. package/dist/component/coverage.d.ts +1 -0
  23. package/dist/component/coverage.d.ts.map +1 -1
  24. package/dist/component/coverage.js +6 -1
  25. package/dist/component/coverage.js.map +1 -1
  26. package/dist/component/eventStore.d.ts +2 -0
  27. package/dist/component/eventStore.d.ts.map +1 -1
  28. package/dist/component/http.d.ts.map +1 -1
  29. package/dist/component/http.js +51 -1
  30. package/dist/component/http.js.map +1 -1
  31. package/dist/component/ingest.d.ts +2 -0
  32. package/dist/component/ingest.d.ts.map +1 -1
  33. package/dist/component/ingest.js +42 -3
  34. package/dist/component/ingest.js.map +1 -1
  35. package/dist/component/origin.d.ts +70 -0
  36. package/dist/component/origin.d.ts.map +1 -0
  37. package/dist/component/origin.js +230 -0
  38. package/dist/component/origin.js.map +1 -0
  39. package/dist/component/platforms.d.ts +33 -0
  40. package/dist/component/platforms.d.ts.map +1 -0
  41. package/dist/component/platforms.js +328 -0
  42. package/dist/component/platforms.js.map +1 -0
  43. package/dist/component/reports.d.ts +27 -72
  44. package/dist/component/reports.d.ts.map +1 -1
  45. package/dist/component/reports.js +51 -10
  46. package/dist/component/reports.js.map +1 -1
  47. package/dist/component/sanitize.d.ts +5 -0
  48. package/dist/component/sanitize.d.ts.map +1 -1
  49. package/dist/component/sanitize.js +33 -1
  50. package/dist/component/sanitize.js.map +1 -1
  51. package/dist/component/schema.d.ts +62 -7
  52. package/dist/component/schema.js +16 -1
  53. package/dist/component/schema.js.map +1 -1
  54. package/dist/component/trackedLinks.d.ts +91 -0
  55. package/dist/component/trackedLinks.d.ts.map +1 -0
  56. package/dist/component/trackedLinks.js +314 -0
  57. package/dist/component/trackedLinks.js.map +1 -0
  58. package/dist/component/useragent.d.ts +6 -0
  59. package/dist/component/useragent.d.ts.map +1 -1
  60. package/dist/component/useragent.js +9 -0
  61. package/dist/component/useragent.js.map +1 -1
  62. package/dist/component/validators.d.ts +51 -11
  63. package/dist/component/validators.d.ts.map +1 -1
  64. package/dist/component/validators.js +35 -1
  65. package/dist/component/validators.js.map +1 -1
  66. package/dist/tracker/generated.d.ts +6 -6
  67. package/dist/tracker/generated.d.ts.map +1 -1
  68. package/dist/tracker/generated.js +6 -6
  69. package/dist/tracker/generated.js.map +1 -1
  70. package/dist/tracker/tracker.d.ts +1 -0
  71. package/dist/tracker/tracker.d.ts.map +1 -1
  72. package/dist/tracker/tracker.js +16 -4
  73. package/dist/tracker/tracker.js.map +1 -1
  74. package/dist/tracker.min.js +1 -1
  75. package/docs/upgrading.md +152 -19
  76. package/llms.txt +6 -1
  77. package/package.json +2 -2
  78. package/src/component/_generated/api.ts +6 -0
  79. package/src/component/_generated/component.ts +152 -1
  80. package/src/component/constants.ts +7 -0
  81. package/src/component/coverage.ts +7 -1
  82. package/src/component/http.ts +56 -1
  83. package/src/component/ingest.ts +54 -1
  84. package/src/component/origin.ts +273 -0
  85. package/src/component/platforms.ts +359 -0
  86. package/src/component/reports.ts +74 -10
  87. package/src/component/sanitize.ts +39 -1
  88. package/src/component/schema.ts +18 -0
  89. package/src/component/trackedLinks.ts +384 -0
  90. package/src/component/useragent.ts +11 -0
  91. package/src/component/validators.ts +71 -0
  92. package/src/tracker/generated.ts +6 -6
@@ -4,7 +4,8 @@ import type { ComponentApi } from "../component/_generated/component.js";
4
4
  import { eventPropertiesValidator, eventTypeValidator, funnelStepValidator, goalMatchTypeValidator, ingestContextValidator, ingestResultValidator, trackerEventValidator, vitalMetricValidator } from "../component/validators.js";
5
5
  import { type FederatedAnalyticsAuthorizerOptions, type FederatedAnalyticsConnectionStatus, type FederatedSiteSummary } from "./federation.js";
6
6
  export { eventPropertiesValidator, eventTypeValidator, funnelStepValidator, goalMatchTypeValidator, ingestContextValidator, ingestResultValidator, trackerEventValidator, vitalMetricValidator, };
7
- export type { EventProperties, EventType, FunnelStep, IngestContext, TrackerEvent, } from "../component/validators.js";
7
+ export type { Channel, EventProperties, EventType, Evidence, FunnelStep, IngestContext, TrackerEvent, } from "../component/validators.js";
8
+ export { channelForPlatform, platformDimensionValue, platformForSource, splitPlatformDimension, } from "../component/origin.js";
8
9
  export { VITAL_METRICS, VITAL_THRESHOLDS } from "../component/vitals.js";
9
10
  export { normalizeRoute } from "../component/sanitize.js";
10
11
  export { localDayStart, nextLocalDayStart, previousLocalDayStart, } from "../component/localTime.js";
@@ -57,6 +58,10 @@ export type Funnel = FunctionReturnType<ComponentApi["funnels"]["list"]>[number]
57
58
  export type UpsertAffiliateInput = FunctionArgs<ComponentApi["affiliates"]["upsert"]>;
58
59
  export type UpsertAffiliateOutput = FunctionReturnType<ComponentApi["affiliates"]["upsert"]>;
59
60
  export type Affiliate = FunctionReturnType<ComponentApi["affiliates"]["list"]>[number];
61
+ export type CreateTrackedLinkInput = FunctionArgs<ComponentApi["trackedLinks"]["create"]>;
62
+ export type UpdateTrackedLinkInput = FunctionArgs<ComponentApi["trackedLinks"]["update"]>;
63
+ export type ListTrackedLinksInput = FunctionArgs<ComponentApi["trackedLinks"]["list"]>;
64
+ export type TrackedLink = FunctionReturnType<ComponentApi["trackedLinks"]["list"]>[number];
60
65
  export type CleanupInput = {
61
66
  siteId: string;
62
67
  kind: RetentionKind;
@@ -175,13 +180,16 @@ export declare class Rastro {
175
180
  breakdowns: {
176
181
  topBrowsers: "pageviews" | "sessions" | "eventVolume";
177
182
  topCampaigns: "pageviews" | "sessions" | "eventVolume";
183
+ topChannels: "pageviews" | "sessions" | "eventVolume";
178
184
  topCountries: "pageviews" | "sessions" | "eventVolume";
179
185
  topDevices: "pageviews" | "sessions" | "eventVolume";
180
186
  topEvents: "eventVolume";
187
+ topEvidence: "pageviews" | "sessions" | "eventVolume";
181
188
  topGoals: "goalCompletionVolume";
182
189
  topMediums: "pageviews" | "sessions" | "eventVolume";
183
190
  topOutbound: "eventVolume";
184
191
  topPages: "pageviews" | "sessions" | "eventVolume";
192
+ topPlatforms: "pageviews" | "sessions" | "eventVolume";
185
193
  topSources: "pageviews" | "sessions" | "eventVolume";
186
194
  };
187
195
  coverage: {
@@ -239,6 +247,11 @@ export declare class Rastro {
239
247
  revenueCents: number;
240
248
  value: string;
241
249
  }>;
250
+ topChannels: Array<{
251
+ count: number;
252
+ revenueCents: number;
253
+ value: string;
254
+ }>;
242
255
  topCountries: Array<{
243
256
  count: number;
244
257
  revenueCents: number;
@@ -254,6 +267,11 @@ export declare class Rastro {
254
267
  revenueCents: number;
255
268
  value: string;
256
269
  }>;
270
+ topEvidence: Array<{
271
+ count: number;
272
+ revenueCents: number;
273
+ value: string;
274
+ }>;
257
275
  topGoals: Array<{
258
276
  count: number;
259
277
  revenueCents: number;
@@ -274,6 +292,11 @@ export declare class Rastro {
274
292
  revenueCents: number;
275
293
  value: string;
276
294
  }>;
295
+ topPlatforms: Array<{
296
+ count: number;
297
+ revenueCents: number;
298
+ value: string;
299
+ }>;
277
300
  topSources: Array<{
278
301
  count: number;
279
302
  revenueCents: number;
@@ -338,6 +361,7 @@ export declare class Rastro {
338
361
  affiliateId?: string;
339
362
  affiliateSlug?: string;
340
363
  browser: string;
364
+ channel?: "direct" | "organic_search" | "paid_search" | "organic_social" | "paid_social" | "messaging" | "email" | "affiliate" | "ai" | "display" | "referral" | "offline";
341
365
  city?: string;
342
366
  conversionCount: number;
343
367
  country?: string;
@@ -346,6 +370,7 @@ export declare class Rastro {
346
370
  durationMs: number;
347
371
  entryPath: string;
348
372
  eventCount: number;
373
+ evidence?: "utm" | "clickId" | "referrer" | "inApp" | "affiliate" | "none" | "legacy";
349
374
  exitPath: string;
350
375
  lastSeenAt: number;
351
376
  latitude?: number;
@@ -353,6 +378,7 @@ export declare class Rastro {
353
378
  newVisitor?: boolean;
354
379
  os: string;
355
380
  pageviewCount: number;
381
+ platform?: string;
356
382
  referrer?: string;
357
383
  revenueCents: number;
358
384
  sessionId: string;
@@ -383,6 +409,7 @@ export declare class Rastro {
383
409
  affiliateId?: string;
384
410
  affiliateSlug?: string;
385
411
  browser: string;
412
+ channel?: "direct" | "organic_search" | "paid_search" | "organic_social" | "paid_social" | "messaging" | "email" | "affiliate" | "ai" | "display" | "referral" | "offline";
386
413
  city?: string;
387
414
  conversionCount: number;
388
415
  country?: string;
@@ -391,6 +418,7 @@ export declare class Rastro {
391
418
  durationMs: number;
392
419
  entryPath: string;
393
420
  eventCount: number;
421
+ evidence?: "utm" | "clickId" | "referrer" | "inApp" | "affiliate" | "none" | "legacy";
394
422
  exitPath: string;
395
423
  lastSeenAt: number;
396
424
  latitude?: number;
@@ -398,6 +426,7 @@ export declare class Rastro {
398
426
  newVisitor?: boolean;
399
427
  os: string;
400
428
  pageviewCount: number;
429
+ platform?: string;
401
430
  referrer?: string;
402
431
  revenueCents: number;
403
432
  sessionId: string;
@@ -766,6 +795,26 @@ export declare class Rastro {
766
795
  updatedAt: number;
767
796
  }[]>;
768
797
  removeAffiliate(ctx: MutationCtx, siteId: string, affiliateId: string): Promise<null>;
798
+ createTrackedLink(ctx: MutationCtx, args: CreateTrackedLinkInput): Promise<string>;
799
+ updateTrackedLink(ctx: MutationCtx, args: UpdateTrackedLinkInput): Promise<null>;
800
+ deleteTrackedLink(ctx: MutationCtx, siteId: string, linkId: string): Promise<null>;
801
+ listTrackedLinks(ctx: QueryCtx | MutationCtx | ActionCtx, args: ListTrackedLinksInput): Promise<{
802
+ _creationTime: number;
803
+ _id: string;
804
+ bots: number;
805
+ botsLast30Days: number;
806
+ campaign?: string;
807
+ channel: "organic_social" | "paid_social" | "messaging" | "email" | "affiliate" | "display" | "referral" | "offline";
808
+ clicks: number;
809
+ clicksLast30Days: number;
810
+ createdAt: number;
811
+ createdBy: string;
812
+ destination: string;
813
+ disabledAt?: number;
814
+ platform: string;
815
+ siteId: string;
816
+ slug: string;
817
+ }[]>;
769
818
  cleanup(ctx: MutationCtx, args: CleanupInput): Promise<{
770
819
  before: number;
771
820
  deleted: number;
@@ -780,7 +829,7 @@ export declare class Rastro {
780
829
  retainedBefore: number | null;
781
830
  state: "complete" | "partial" | "retained" | "unavailable";
782
831
  };
783
- dataset: "overviewHour" | "overviewDay" | "overviewLocalDay" | "events" | "sessions" | "conversions" | "goals" | "funnels" | "affiliates" | "vitals" | "siteMap";
832
+ dataset: "overviewHour" | "overviewDay" | "overviewLocalDay" | "events" | "sessions" | "conversions" | "goals" | "funnels" | "affiliates" | "vitals" | "siteMap" | "origin";
784
833
  }>;
785
834
  from: number;
786
835
  siteId: string;
@@ -813,7 +862,7 @@ export declare class Rastro {
813
862
  hasMore: boolean;
814
863
  }>;
815
864
  }
816
- export type AnalyticsOperation = "site.create" | "site.update" | "site.get" | "site.list" | "ingest" | "conversion.track" | "visitor.link" | "report.overview" | "report.live" | "report.sessions" | "report.sessionJourney" | "report.conversions" | "report.visitorJourney" | "report.goals" | "report.funnels" | "report.affiliates" | "report.vitals" | "report.siteMap" | "goal.upsert" | "goal.list" | "goal.remove" | "funnel.upsert" | "funnel.list" | "funnel.remove" | "affiliate.upsert" | "affiliate.list" | "affiliate.remove" | "retention.cleanup" | "retention.policy" | "retention.status" | "coverage.read";
865
+ export type AnalyticsOperation = "site.create" | "site.update" | "site.get" | "site.list" | "ingest" | "conversion.track" | "visitor.link" | "report.overview" | "report.live" | "report.sessions" | "report.sessionJourney" | "report.conversions" | "report.visitorJourney" | "report.goals" | "report.funnels" | "report.affiliates" | "report.vitals" | "report.siteMap" | "goal.upsert" | "goal.list" | "goal.remove" | "funnel.upsert" | "funnel.list" | "funnel.remove" | "affiliate.upsert" | "affiliate.list" | "affiliate.remove" | "trackedLink.create" | "trackedLink.update" | "trackedLink.delete" | "trackedLink.list" | "retention.cleanup" | "retention.policy" | "retention.status" | "coverage.read";
817
866
  export type AnalyticsAuthorizationRequest = {
818
867
  operation: AnalyticsOperation;
819
868
  siteIds: string[];
@@ -829,13 +878,16 @@ declare const hostOverviewValidator: import("convex/values").VObject<{
829
878
  breakdowns: {
830
879
  topBrowsers: "eventVolume" | "pageviews" | "sessions";
831
880
  topCampaigns: "eventVolume" | "pageviews" | "sessions";
881
+ topChannels: "eventVolume" | "pageviews" | "sessions";
832
882
  topCountries: "eventVolume" | "pageviews" | "sessions";
833
883
  topDevices: "eventVolume" | "pageviews" | "sessions";
834
884
  topEvents: "eventVolume";
885
+ topEvidence: "eventVolume" | "pageviews" | "sessions";
835
886
  topGoals: "goalCompletionVolume";
836
887
  topMediums: "eventVolume" | "pageviews" | "sessions";
837
888
  topOutbound: "eventVolume";
838
889
  topPages: "eventVolume" | "pageviews" | "sessions";
890
+ topPlatforms: "eventVolume" | "pageviews" | "sessions";
839
891
  topSources: "eventVolume" | "pageviews" | "sessions";
840
892
  };
841
893
  coverage: {
@@ -893,6 +945,11 @@ declare const hostOverviewValidator: import("convex/values").VObject<{
893
945
  revenueCents: number;
894
946
  value: string;
895
947
  }[];
948
+ topChannels: {
949
+ count: number;
950
+ revenueCents: number;
951
+ value: string;
952
+ }[];
896
953
  topCountries: {
897
954
  count: number;
898
955
  revenueCents: number;
@@ -908,6 +965,11 @@ declare const hostOverviewValidator: import("convex/values").VObject<{
908
965
  revenueCents: number;
909
966
  value: string;
910
967
  }[];
968
+ topEvidence: {
969
+ count: number;
970
+ revenueCents: number;
971
+ value: string;
972
+ }[];
911
973
  topGoals: {
912
974
  count: number;
913
975
  revenueCents: number;
@@ -928,6 +990,11 @@ declare const hostOverviewValidator: import("convex/values").VObject<{
928
990
  revenueCents: number;
929
991
  value: string;
930
992
  }[];
993
+ topPlatforms: {
994
+ count: number;
995
+ revenueCents: number;
996
+ value: string;
997
+ }[];
931
998
  topSources: {
932
999
  count: number;
933
1000
  revenueCents: number;
@@ -1152,17 +1219,59 @@ declare const hostOverviewValidator: import("convex/values").VObject<{
1152
1219
  count: import("convex/values").VFloat64<number, "required">;
1153
1220
  revenueCents: import("convex/values").VFloat64<number, "required">;
1154
1221
  }, "required", "count" | "revenueCents" | "value">, "required">;
1222
+ topPlatforms: import("convex/values").VArray<{
1223
+ count: number;
1224
+ revenueCents: number;
1225
+ value: string;
1226
+ }[], import("convex/values").VObject<{
1227
+ count: number;
1228
+ revenueCents: number;
1229
+ value: string;
1230
+ }, {
1231
+ value: import("convex/values").VString<string, "required">;
1232
+ count: import("convex/values").VFloat64<number, "required">;
1233
+ revenueCents: import("convex/values").VFloat64<number, "required">;
1234
+ }, "required", "count" | "revenueCents" | "value">, "required">;
1235
+ topChannels: import("convex/values").VArray<{
1236
+ count: number;
1237
+ revenueCents: number;
1238
+ value: string;
1239
+ }[], import("convex/values").VObject<{
1240
+ count: number;
1241
+ revenueCents: number;
1242
+ value: string;
1243
+ }, {
1244
+ value: import("convex/values").VString<string, "required">;
1245
+ count: import("convex/values").VFloat64<number, "required">;
1246
+ revenueCents: import("convex/values").VFloat64<number, "required">;
1247
+ }, "required", "count" | "revenueCents" | "value">, "required">;
1248
+ topEvidence: import("convex/values").VArray<{
1249
+ count: number;
1250
+ revenueCents: number;
1251
+ value: string;
1252
+ }[], import("convex/values").VObject<{
1253
+ count: number;
1254
+ revenueCents: number;
1255
+ value: string;
1256
+ }, {
1257
+ value: import("convex/values").VString<string, "required">;
1258
+ count: import("convex/values").VFloat64<number, "required">;
1259
+ revenueCents: import("convex/values").VFloat64<number, "required">;
1260
+ }, "required", "count" | "revenueCents" | "value">, "required">;
1155
1261
  metadata: import("convex/values").VObject<{
1156
1262
  breakdowns: {
1157
1263
  topBrowsers: "eventVolume" | "pageviews" | "sessions";
1158
1264
  topCampaigns: "eventVolume" | "pageviews" | "sessions";
1265
+ topChannels: "eventVolume" | "pageviews" | "sessions";
1159
1266
  topCountries: "eventVolume" | "pageviews" | "sessions";
1160
1267
  topDevices: "eventVolume" | "pageviews" | "sessions";
1161
1268
  topEvents: "eventVolume";
1269
+ topEvidence: "eventVolume" | "pageviews" | "sessions";
1162
1270
  topGoals: "goalCompletionVolume";
1163
1271
  topMediums: "eventVolume" | "pageviews" | "sessions";
1164
1272
  topOutbound: "eventVolume";
1165
1273
  topPages: "eventVolume" | "pageviews" | "sessions";
1274
+ topPlatforms: "eventVolume" | "pageviews" | "sessions";
1166
1275
  topSources: "eventVolume" | "pageviews" | "sessions";
1167
1276
  };
1168
1277
  coverage: {
@@ -1210,13 +1319,16 @@ declare const hostOverviewValidator: import("convex/values").VObject<{
1210
1319
  breakdowns: import("convex/values").VObject<{
1211
1320
  topBrowsers: "eventVolume" | "pageviews" | "sessions";
1212
1321
  topCampaigns: "eventVolume" | "pageviews" | "sessions";
1322
+ topChannels: "eventVolume" | "pageviews" | "sessions";
1213
1323
  topCountries: "eventVolume" | "pageviews" | "sessions";
1214
1324
  topDevices: "eventVolume" | "pageviews" | "sessions";
1215
1325
  topEvents: "eventVolume";
1326
+ topEvidence: "eventVolume" | "pageviews" | "sessions";
1216
1327
  topGoals: "goalCompletionVolume";
1217
1328
  topMediums: "eventVolume" | "pageviews" | "sessions";
1218
1329
  topOutbound: "eventVolume";
1219
1330
  topPages: "eventVolume" | "pageviews" | "sessions";
1331
+ topPlatforms: "eventVolume" | "pageviews" | "sessions";
1220
1332
  topSources: "eventVolume" | "pageviews" | "sessions";
1221
1333
  }, {
1222
1334
  topSources: import("convex/values").VUnion<"eventVolume" | "pageviews" | "sessions", [import("convex/values").VLiteral<"pageviews", "required">, import("convex/values").VLiteral<"sessions", "required">, import("convex/values").VLiteral<"eventVolume", "required">], "required", never>;
@@ -1229,7 +1341,10 @@ declare const hostOverviewValidator: import("convex/values").VObject<{
1229
1341
  topGoals: import("convex/values").VLiteral<"goalCompletionVolume", "required">;
1230
1342
  topMediums: import("convex/values").VUnion<"eventVolume" | "pageviews" | "sessions", [import("convex/values").VLiteral<"pageviews", "required">, import("convex/values").VLiteral<"sessions", "required">, import("convex/values").VLiteral<"eventVolume", "required">], "required", never>;
1231
1343
  topOutbound: import("convex/values").VLiteral<"eventVolume", "required">;
1232
- }, "required", "topBrowsers" | "topCampaigns" | "topCountries" | "topDevices" | "topEvents" | "topGoals" | "topMediums" | "topOutbound" | "topPages" | "topSources">;
1344
+ topPlatforms: import("convex/values").VUnion<"eventVolume" | "pageviews" | "sessions", [import("convex/values").VLiteral<"pageviews", "required">, import("convex/values").VLiteral<"sessions", "required">, import("convex/values").VLiteral<"eventVolume", "required">], "required", never>;
1345
+ topChannels: import("convex/values").VUnion<"eventVolume" | "pageviews" | "sessions", [import("convex/values").VLiteral<"pageviews", "required">, import("convex/values").VLiteral<"sessions", "required">, import("convex/values").VLiteral<"eventVolume", "required">], "required", never>;
1346
+ topEvidence: import("convex/values").VUnion<"eventVolume" | "pageviews" | "sessions", [import("convex/values").VLiteral<"pageviews", "required">, import("convex/values").VLiteral<"sessions", "required">, import("convex/values").VLiteral<"eventVolume", "required">], "required", never>;
1347
+ }, "required", "topBrowsers" | "topCampaigns" | "topChannels" | "topCountries" | "topDevices" | "topEvents" | "topEvidence" | "topGoals" | "topMediums" | "topOutbound" | "topPages" | "topPlatforms" | "topSources">;
1233
1348
  dimensionsSince: import("convex/values").VUnion<number | null, [import("convex/values").VFloat64<number, "required">, import("convex/values").VNull<null, "required">], "required", never>;
1234
1349
  engagement: import("convex/values").VUnion<"counted" | "unavailable", [import("convex/values").VLiteral<"counted", "required">, import("convex/values").VLiteral<"unavailable", "required">], "required", never>;
1235
1350
  coverage: import("convex/values").VObject<{
@@ -1267,8 +1382,8 @@ declare const hostOverviewValidator: import("convex/values").VObject<{
1267
1382
  outboundLinks: import("convex/values").VLiteral<"eventVolume", "required">;
1268
1383
  botDetection: import("convex/values").VLiteral<"userAgent", "required">;
1269
1384
  }, "required", "botDetection" | "errorInsights" | "outboundLinks" | "sessionReplay">;
1270
- }, "required", "breakdowns" | "breakdowns.topBrowsers" | "breakdowns.topCampaigns" | "breakdowns.topCountries" | "breakdowns.topDevices" | "breakdowns.topEvents" | "breakdowns.topGoals" | "breakdowns.topMediums" | "breakdowns.topOutbound" | "breakdowns.topPages" | "breakdowns.topSources" | "coverage" | "coverage.availableFrom" | "coverage.availableThrough" | "coverage.generation" | "coverage.retainedBefore" | "coverage.state" | "dimensionsSince" | "engagement" | "features" | "features.botDetection" | "features.errorInsights" | "features.outboundLinks" | "features.sessionReplay" | "range" | "range.boundary" | "range.from" | "range.timezone" | "range.to" | "visitors" | "visitors.basis" | "visitors.exact" | "visitors.legacyIncomplete" | "visitors.precision" | "visitors.sketchVersion">;
1271
- }, "required", "currency" | "from" | "interval" | "metadata" | "metadata.breakdowns" | "metadata.breakdowns.topBrowsers" | "metadata.breakdowns.topCampaigns" | "metadata.breakdowns.topCountries" | "metadata.breakdowns.topDevices" | "metadata.breakdowns.topEvents" | "metadata.breakdowns.topGoals" | "metadata.breakdowns.topMediums" | "metadata.breakdowns.topOutbound" | "metadata.breakdowns.topPages" | "metadata.breakdowns.topSources" | "metadata.coverage" | "metadata.coverage.availableFrom" | "metadata.coverage.availableThrough" | "metadata.coverage.generation" | "metadata.coverage.retainedBefore" | "metadata.coverage.state" | "metadata.dimensionsSince" | "metadata.engagement" | "metadata.features" | "metadata.features.botDetection" | "metadata.features.errorInsights" | "metadata.features.outboundLinks" | "metadata.features.sessionReplay" | "metadata.range" | "metadata.range.boundary" | "metadata.range.from" | "metadata.range.timezone" | "metadata.range.to" | "metadata.visitors" | "metadata.visitors.basis" | "metadata.visitors.exact" | "metadata.visitors.legacyIncomplete" | "metadata.visitors.precision" | "metadata.visitors.sketchVersion" | "timeSeries" | "to" | "topBrowsers" | "topCampaigns" | "topCountries" | "topDevices" | "topEvents" | "topGoals" | "topMediums" | "topOutbound" | "topPages" | "topSources" | "totals" | "totals.clicks" | "totals.continuedSessions" | "totals.conversions" | "totals.customEvents" | "totals.durationMs" | "totals.events" | "totals.newVisitors" | "totals.outboundClicks" | "totals.pageviews" | "totals.revenueCents" | "totals.sessions" | "totals.visitors">;
1385
+ }, "required", "breakdowns" | "breakdowns.topBrowsers" | "breakdowns.topCampaigns" | "breakdowns.topChannels" | "breakdowns.topCountries" | "breakdowns.topDevices" | "breakdowns.topEvents" | "breakdowns.topEvidence" | "breakdowns.topGoals" | "breakdowns.topMediums" | "breakdowns.topOutbound" | "breakdowns.topPages" | "breakdowns.topPlatforms" | "breakdowns.topSources" | "coverage" | "coverage.availableFrom" | "coverage.availableThrough" | "coverage.generation" | "coverage.retainedBefore" | "coverage.state" | "dimensionsSince" | "engagement" | "features" | "features.botDetection" | "features.errorInsights" | "features.outboundLinks" | "features.sessionReplay" | "range" | "range.boundary" | "range.from" | "range.timezone" | "range.to" | "visitors" | "visitors.basis" | "visitors.exact" | "visitors.legacyIncomplete" | "visitors.precision" | "visitors.sketchVersion">;
1386
+ }, "required", "currency" | "from" | "interval" | "metadata" | "metadata.breakdowns" | "metadata.breakdowns.topBrowsers" | "metadata.breakdowns.topCampaigns" | "metadata.breakdowns.topChannels" | "metadata.breakdowns.topCountries" | "metadata.breakdowns.topDevices" | "metadata.breakdowns.topEvents" | "metadata.breakdowns.topEvidence" | "metadata.breakdowns.topGoals" | "metadata.breakdowns.topMediums" | "metadata.breakdowns.topOutbound" | "metadata.breakdowns.topPages" | "metadata.breakdowns.topPlatforms" | "metadata.breakdowns.topSources" | "metadata.coverage" | "metadata.coverage.availableFrom" | "metadata.coverage.availableThrough" | "metadata.coverage.generation" | "metadata.coverage.retainedBefore" | "metadata.coverage.state" | "metadata.dimensionsSince" | "metadata.engagement" | "metadata.features" | "metadata.features.botDetection" | "metadata.features.errorInsights" | "metadata.features.outboundLinks" | "metadata.features.sessionReplay" | "metadata.range" | "metadata.range.boundary" | "metadata.range.from" | "metadata.range.timezone" | "metadata.range.to" | "metadata.visitors" | "metadata.visitors.basis" | "metadata.visitors.exact" | "metadata.visitors.legacyIncomplete" | "metadata.visitors.precision" | "metadata.visitors.sketchVersion" | "timeSeries" | "to" | "topBrowsers" | "topCampaigns" | "topChannels" | "topCountries" | "topDevices" | "topEvents" | "topEvidence" | "topGoals" | "topMediums" | "topOutbound" | "topPages" | "topPlatforms" | "topSources" | "totals" | "totals.clicks" | "totals.continuedSessions" | "totals.conversions" | "totals.customEvents" | "totals.durationMs" | "totals.events" | "totals.newVisitors" | "totals.outboundClicks" | "totals.pageviews" | "totals.revenueCents" | "totals.sessions" | "totals.visitors">;
1272
1387
  declare const hostGoalsReportValidator: import("convex/values").VObject<{
1273
1388
  goals: {
1274
1389
  _creationTime: number;
@@ -2186,6 +2301,7 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
2186
2301
  city?: string | undefined;
2187
2302
  country?: string | undefined;
2188
2303
  device?: string | undefined;
2304
+ inApp?: string | undefined;
2189
2305
  latitude?: number | undefined;
2190
2306
  longitude?: number | undefined;
2191
2307
  os?: string | undefined;
@@ -2193,6 +2309,7 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
2193
2309
  } | undefined;
2194
2310
  events: {
2195
2311
  affiliateSlug?: string | undefined;
2312
+ clid?: string[] | undefined;
2196
2313
  currency?: string | undefined;
2197
2314
  eventId: string;
2198
2315
  href?: string | undefined;
@@ -2253,13 +2370,16 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
2253
2370
  breakdowns: {
2254
2371
  topBrowsers: "pageviews" | "sessions" | "eventVolume";
2255
2372
  topCampaigns: "pageviews" | "sessions" | "eventVolume";
2373
+ topChannels: "pageviews" | "sessions" | "eventVolume";
2256
2374
  topCountries: "pageviews" | "sessions" | "eventVolume";
2257
2375
  topDevices: "pageviews" | "sessions" | "eventVolume";
2258
2376
  topEvents: "eventVolume";
2377
+ topEvidence: "pageviews" | "sessions" | "eventVolume";
2259
2378
  topGoals: "goalCompletionVolume";
2260
2379
  topMediums: "pageviews" | "sessions" | "eventVolume";
2261
2380
  topOutbound: "eventVolume";
2262
2381
  topPages: "pageviews" | "sessions" | "eventVolume";
2382
+ topPlatforms: "pageviews" | "sessions" | "eventVolume";
2263
2383
  topSources: "pageviews" | "sessions" | "eventVolume";
2264
2384
  };
2265
2385
  coverage: {
@@ -2317,6 +2437,11 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
2317
2437
  revenueCents: number;
2318
2438
  value: string;
2319
2439
  }>;
2440
+ topChannels: Array<{
2441
+ count: number;
2442
+ revenueCents: number;
2443
+ value: string;
2444
+ }>;
2320
2445
  topCountries: Array<{
2321
2446
  count: number;
2322
2447
  revenueCents: number;
@@ -2332,6 +2457,11 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
2332
2457
  revenueCents: number;
2333
2458
  value: string;
2334
2459
  }>;
2460
+ topEvidence: Array<{
2461
+ count: number;
2462
+ revenueCents: number;
2463
+ value: string;
2464
+ }>;
2335
2465
  topGoals: Array<{
2336
2466
  count: number;
2337
2467
  revenueCents: number;
@@ -2352,6 +2482,11 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
2352
2482
  revenueCents: number;
2353
2483
  value: string;
2354
2484
  }>;
2485
+ topPlatforms: Array<{
2486
+ count: number;
2487
+ revenueCents: number;
2488
+ value: string;
2489
+ }>;
2355
2490
  topSources: Array<{
2356
2491
  count: number;
2357
2492
  revenueCents: number;
@@ -2420,6 +2555,7 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
2420
2555
  affiliateId?: string;
2421
2556
  affiliateSlug?: string;
2422
2557
  browser: string;
2558
+ channel?: "direct" | "organic_search" | "paid_search" | "organic_social" | "paid_social" | "messaging" | "email" | "affiliate" | "ai" | "display" | "referral" | "offline";
2423
2559
  city?: string;
2424
2560
  conversionCount: number;
2425
2561
  country?: string;
@@ -2428,6 +2564,7 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
2428
2564
  durationMs: number;
2429
2565
  entryPath: string;
2430
2566
  eventCount: number;
2567
+ evidence?: "utm" | "clickId" | "referrer" | "inApp" | "affiliate" | "none" | "legacy";
2431
2568
  exitPath: string;
2432
2569
  lastSeenAt: number;
2433
2570
  latitude?: number;
@@ -2435,6 +2572,7 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
2435
2572
  newVisitor?: boolean;
2436
2573
  os: string;
2437
2574
  pageviewCount: number;
2575
+ platform?: string;
2438
2576
  referrer?: string;
2439
2577
  revenueCents: number;
2440
2578
  sessionId: string;
@@ -2477,6 +2615,7 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
2477
2615
  affiliateId?: string;
2478
2616
  affiliateSlug?: string;
2479
2617
  browser: string;
2618
+ channel?: "direct" | "organic_search" | "paid_search" | "organic_social" | "paid_social" | "messaging" | "email" | "affiliate" | "ai" | "display" | "referral" | "offline";
2480
2619
  city?: string;
2481
2620
  conversionCount: number;
2482
2621
  country?: string;
@@ -2485,6 +2624,7 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
2485
2624
  durationMs: number;
2486
2625
  entryPath: string;
2487
2626
  eventCount: number;
2627
+ evidence?: "utm" | "clickId" | "referrer" | "inApp" | "affiliate" | "none" | "legacy";
2488
2628
  exitPath: string;
2489
2629
  lastSeenAt: number;
2490
2630
  latitude?: number;
@@ -2492,6 +2632,7 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
2492
2632
  newVisitor?: boolean;
2493
2633
  os: string;
2494
2634
  pageviewCount: number;
2635
+ platform?: string;
2495
2636
  referrer?: string;
2496
2637
  revenueCents: number;
2497
2638
  sessionId: string;
@@ -2877,7 +3018,7 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
2877
3018
  retainedBefore: number | null;
2878
3019
  state: "complete" | "partial" | "retained" | "unavailable";
2879
3020
  };
2880
- dataset: "overviewHour" | "overviewDay" | "overviewLocalDay" | "events" | "sessions" | "conversions" | "goals" | "funnels" | "affiliates" | "vitals" | "siteMap";
3021
+ dataset: "overviewHour" | "overviewDay" | "overviewLocalDay" | "events" | "sessions" | "conversions" | "goals" | "funnels" | "affiliates" | "vitals" | "siteMap" | "origin";
2881
3022
  }>;
2882
3023
  from: number;
2883
3024
  siteId: string;
@@ -3015,6 +3156,48 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
3015
3156
  affiliateId: string;
3016
3157
  siteId: string;
3017
3158
  }, Promise<null>>;
3159
+ createTrackedLink: import("convex/server").RegisteredMutation<"public", {
3160
+ campaign?: string | undefined;
3161
+ channel: "affiliate" | "display" | "email" | "messaging" | "offline" | "organic_social" | "paid_social" | "referral";
3162
+ createdBy: string;
3163
+ destination: string;
3164
+ platform: string;
3165
+ siteId: string;
3166
+ slug: string;
3167
+ }, Promise<string>>;
3168
+ updateTrackedLink: import("convex/server").RegisteredMutation<"public", {
3169
+ campaign?: string | null | undefined;
3170
+ channel?: "affiliate" | "display" | "email" | "messaging" | "offline" | "organic_social" | "paid_social" | "referral" | undefined;
3171
+ destination?: string | undefined;
3172
+ disabled?: boolean | undefined;
3173
+ linkId: string;
3174
+ platform?: string | undefined;
3175
+ siteId: string;
3176
+ }, Promise<null>>;
3177
+ deleteTrackedLink: import("convex/server").RegisteredMutation<"public", {
3178
+ linkId: string;
3179
+ siteId: string;
3180
+ }, Promise<null>>;
3181
+ listTrackedLinks: import("convex/server").RegisteredQuery<"public", {
3182
+ now: number;
3183
+ siteId: string;
3184
+ }, Promise<{
3185
+ _creationTime: number;
3186
+ _id: string;
3187
+ bots: number;
3188
+ botsLast30Days: number;
3189
+ campaign?: string;
3190
+ channel: "organic_social" | "paid_social" | "messaging" | "email" | "affiliate" | "display" | "referral" | "offline";
3191
+ clicks: number;
3192
+ clicksLast30Days: number;
3193
+ createdAt: number;
3194
+ createdBy: string;
3195
+ destination: string;
3196
+ disabledAt?: number;
3197
+ platform: string;
3198
+ siteId: string;
3199
+ slug: string;
3200
+ }[]>>;
3018
3201
  cleanupAnalytics: import("convex/server").RegisteredMutation<"public", {
3019
3202
  batchSize?: number | undefined;
3020
3203
  before: number;
@@ -3082,9 +3265,13 @@ export declare function exposeFederatedAnalyticsApi(component: ComponentApi, opt
3082
3265
  revenueSummary: "revenueSummary";
3083
3266
  vitalsReport: "vitalsReport";
3084
3267
  siteMap: "siteMap";
3268
+ listTrackedLinks: "listTrackedLinks";
3269
+ createTrackedLink: "createTrackedLink";
3270
+ updateTrackedLink: "updateTrackedLink";
3271
+ deleteTrackedLink: "deleteTrackedLink";
3085
3272
  transferConnection?: "transferConnection" | undefined;
3086
3273
  };
3087
- capabilities: ("affiliates" | "configure" | "conversions" | "dataCoverage" | "funnels" | "goals" | "liveVisitors" | "localDays" | "overview" | "revenueSummary" | "sessionDetails" | "sessionJourney" | "sessions" | "siteMap" | "siteSummaries" | "transfer" | "visitorJourney" | "vitals")[];
3274
+ capabilities: ("affiliates" | "configure" | "conversions" | "dataCoverage" | "funnels" | "goals" | "liveVisitors" | "localDays" | "overview" | "revenueSummary" | "sessionDetails" | "sessionJourney" | "sessions" | "siteMap" | "siteSummaries" | "trackedLinks" | "transfer" | "visitorJourney" | "vitals")[];
3088
3275
  limits: {
3089
3276
  maxSitesPerRequest: 10;
3090
3277
  maxSitesPerConnection: 10;
@@ -3109,13 +3296,16 @@ export declare function exposeFederatedAnalyticsApi(component: ComponentApi, opt
3109
3296
  breakdowns: {
3110
3297
  topBrowsers: "pageviews" | "sessions" | "eventVolume";
3111
3298
  topCampaigns: "pageviews" | "sessions" | "eventVolume";
3299
+ topChannels: "pageviews" | "sessions" | "eventVolume";
3112
3300
  topCountries: "pageviews" | "sessions" | "eventVolume";
3113
3301
  topDevices: "pageviews" | "sessions" | "eventVolume";
3114
3302
  topEvents: "eventVolume";
3303
+ topEvidence: "pageviews" | "sessions" | "eventVolume";
3115
3304
  topGoals: "goalCompletionVolume";
3116
3305
  topMediums: "pageviews" | "sessions" | "eventVolume";
3117
3306
  topOutbound: "eventVolume";
3118
3307
  topPages: "pageviews" | "sessions" | "eventVolume";
3308
+ topPlatforms: "pageviews" | "sessions" | "eventVolume";
3119
3309
  topSources: "pageviews" | "sessions" | "eventVolume";
3120
3310
  };
3121
3311
  coverage: {
@@ -3173,6 +3363,11 @@ export declare function exposeFederatedAnalyticsApi(component: ComponentApi, opt
3173
3363
  revenueCents: number;
3174
3364
  value: string;
3175
3365
  }>;
3366
+ topChannels: Array<{
3367
+ count: number;
3368
+ revenueCents: number;
3369
+ value: string;
3370
+ }>;
3176
3371
  topCountries: Array<{
3177
3372
  count: number;
3178
3373
  revenueCents: number;
@@ -3188,6 +3383,11 @@ export declare function exposeFederatedAnalyticsApi(component: ComponentApi, opt
3188
3383
  revenueCents: number;
3189
3384
  value: string;
3190
3385
  }>;
3386
+ topEvidence: Array<{
3387
+ count: number;
3388
+ revenueCents: number;
3389
+ value: string;
3390
+ }>;
3191
3391
  topGoals: Array<{
3192
3392
  count: number;
3193
3393
  revenueCents: number;
@@ -3208,6 +3408,11 @@ export declare function exposeFederatedAnalyticsApi(component: ComponentApi, opt
3208
3408
  revenueCents: number;
3209
3409
  value: string;
3210
3410
  }>;
3411
+ topPlatforms: Array<{
3412
+ count: number;
3413
+ revenueCents: number;
3414
+ value: string;
3415
+ }>;
3211
3416
  topSources: Array<{
3212
3417
  count: number;
3213
3418
  revenueCents: number;
@@ -3276,6 +3481,7 @@ export declare function exposeFederatedAnalyticsApi(component: ComponentApi, opt
3276
3481
  affiliateId?: string;
3277
3482
  affiliateSlug?: string;
3278
3483
  browser: string;
3484
+ channel?: "direct" | "organic_search" | "paid_search" | "organic_social" | "paid_social" | "messaging" | "email" | "affiliate" | "ai" | "display" | "referral" | "offline";
3279
3485
  city?: string;
3280
3486
  conversionCount: number;
3281
3487
  country?: string;
@@ -3284,6 +3490,7 @@ export declare function exposeFederatedAnalyticsApi(component: ComponentApi, opt
3284
3490
  durationMs: number;
3285
3491
  entryPath: string;
3286
3492
  eventCount: number;
3493
+ evidence?: "utm" | "clickId" | "referrer" | "inApp" | "affiliate" | "none" | "legacy";
3287
3494
  exitPath: string;
3288
3495
  lastSeenAt: number;
3289
3496
  latitude?: number;
@@ -3291,6 +3498,7 @@ export declare function exposeFederatedAnalyticsApi(component: ComponentApi, opt
3291
3498
  newVisitor?: boolean;
3292
3499
  os: string;
3293
3500
  pageviewCount: number;
3501
+ platform?: string;
3294
3502
  referrer?: string;
3295
3503
  revenueCents: number;
3296
3504
  sessionId: string;
@@ -3333,6 +3541,7 @@ export declare function exposeFederatedAnalyticsApi(component: ComponentApi, opt
3333
3541
  affiliateId?: string;
3334
3542
  affiliateSlug?: string;
3335
3543
  browser: string;
3544
+ channel?: "direct" | "organic_search" | "paid_search" | "organic_social" | "paid_social" | "messaging" | "email" | "affiliate" | "ai" | "display" | "referral" | "offline";
3336
3545
  city?: string;
3337
3546
  conversionCount: number;
3338
3547
  country?: string;
@@ -3341,6 +3550,7 @@ export declare function exposeFederatedAnalyticsApi(component: ComponentApi, opt
3341
3550
  durationMs: number;
3342
3551
  entryPath: string;
3343
3552
  eventCount: number;
3553
+ evidence?: "utm" | "clickId" | "referrer" | "inApp" | "affiliate" | "none" | "legacy";
3344
3554
  exitPath: string;
3345
3555
  lastSeenAt: number;
3346
3556
  latitude?: number;
@@ -3348,6 +3558,7 @@ export declare function exposeFederatedAnalyticsApi(component: ComponentApi, opt
3348
3558
  newVisitor?: boolean;
3349
3559
  os: string;
3350
3560
  pageviewCount: number;
3561
+ platform?: string;
3351
3562
  referrer?: string;
3352
3563
  revenueCents: number;
3353
3564
  sessionId: string;
@@ -3733,7 +3944,7 @@ export declare function exposeFederatedAnalyticsApi(component: ComponentApi, opt
3733
3944
  retainedBefore: number | null;
3734
3945
  state: "complete" | "partial" | "retained" | "unavailable";
3735
3946
  };
3736
- dataset: "overviewHour" | "overviewDay" | "overviewLocalDay" | "events" | "sessions" | "conversions" | "goals" | "funnels" | "affiliates" | "vitals" | "siteMap";
3947
+ dataset: "overviewHour" | "overviewDay" | "overviewLocalDay" | "events" | "sessions" | "conversions" | "goals" | "funnels" | "affiliates" | "vitals" | "siteMap" | "origin";
3737
3948
  }>;
3738
3949
  from: number;
3739
3950
  siteId: string;
@@ -3846,6 +4057,48 @@ export declare function exposeFederatedAnalyticsApi(component: ComponentApi, opt
3846
4057
  affiliateId: string;
3847
4058
  siteId: string;
3848
4059
  }, Promise<null>>;
4060
+ listTrackedLinks: import("convex/server").RegisteredQuery<"public", {
4061
+ now: number;
4062
+ siteId: string;
4063
+ }, Promise<{
4064
+ _creationTime: number;
4065
+ _id: string;
4066
+ bots: number;
4067
+ botsLast30Days: number;
4068
+ campaign?: string;
4069
+ channel: "organic_social" | "paid_social" | "messaging" | "email" | "affiliate" | "display" | "referral" | "offline";
4070
+ clicks: number;
4071
+ clicksLast30Days: number;
4072
+ createdAt: number;
4073
+ createdBy: string;
4074
+ destination: string;
4075
+ disabledAt?: number;
4076
+ platform: string;
4077
+ siteId: string;
4078
+ slug: string;
4079
+ }[]>>;
4080
+ createTrackedLink: import("convex/server").RegisteredMutation<"public", {
4081
+ campaign?: string | undefined;
4082
+ channel: "affiliate" | "display" | "email" | "messaging" | "offline" | "organic_social" | "paid_social" | "referral";
4083
+ createdBy: string;
4084
+ destination: string;
4085
+ platform: string;
4086
+ siteId: string;
4087
+ slug: string;
4088
+ }, Promise<string>>;
4089
+ updateTrackedLink: import("convex/server").RegisteredMutation<"public", {
4090
+ campaign?: string | null | undefined;
4091
+ channel?: "affiliate" | "display" | "email" | "messaging" | "offline" | "organic_social" | "paid_social" | "referral" | undefined;
4092
+ destination?: string | undefined;
4093
+ disabled?: boolean | undefined;
4094
+ linkId: string;
4095
+ platform?: string | undefined;
4096
+ siteId: string;
4097
+ }, Promise<null>>;
4098
+ deleteTrackedLink: import("convex/server").RegisteredMutation<"public", {
4099
+ linkId: string;
4100
+ siteId: string;
4101
+ }, Promise<null>>;
3849
4102
  retentionStatus: import("convex/server").RegisteredQuery<"public", {
3850
4103
  siteId: string;
3851
4104
  }, Promise<{