cli-meta-ads 0.1.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 (106) hide show
  1. package/AGENTS.md +188 -0
  2. package/AI_CONTEXT.md +144 -0
  3. package/CLAUDE.md +183 -0
  4. package/README.md +590 -0
  5. package/REQUIREMENTS.md +148 -0
  6. package/dist/auth/constants.d.ts +1 -0
  7. package/dist/auth/constants.js +1 -0
  8. package/dist/auth/guards.d.ts +5 -0
  9. package/dist/auth/guards.js +16 -0
  10. package/dist/auth/login.d.ts +28 -0
  11. package/dist/auth/login.js +222 -0
  12. package/dist/cli/action.d.ts +11 -0
  13. package/dist/cli/action.js +77 -0
  14. package/dist/cli/build-cli.d.ts +2 -0
  15. package/dist/cli/build-cli.js +110 -0
  16. package/dist/cli/context.d.ts +24 -0
  17. package/dist/cli/context.js +19 -0
  18. package/dist/client/meta-api-client.d.ts +50 -0
  19. package/dist/client/meta-api-client.js +258 -0
  20. package/dist/client/meta-discovery.d.ts +13 -0
  21. package/dist/client/meta-discovery.js +88 -0
  22. package/dist/commands/accounts.d.ts +4 -0
  23. package/dist/commands/accounts.js +42 -0
  24. package/dist/commands/ads.d.ts +4 -0
  25. package/dist/commands/ads.js +148 -0
  26. package/dist/commands/adsets.d.ts +4 -0
  27. package/dist/commands/adsets.js +49 -0
  28. package/dist/commands/anomalies.d.ts +4 -0
  29. package/dist/commands/anomalies.js +44 -0
  30. package/dist/commands/assets.d.ts +4 -0
  31. package/dist/commands/assets.js +116 -0
  32. package/dist/commands/audiences.d.ts +4 -0
  33. package/dist/commands/audiences.js +40 -0
  34. package/dist/commands/auth.d.ts +4 -0
  35. package/dist/commands/auth.js +139 -0
  36. package/dist/commands/campaigns.d.ts +4 -0
  37. package/dist/commands/campaigns.js +273 -0
  38. package/dist/commands/capi.d.ts +4 -0
  39. package/dist/commands/capi.js +64 -0
  40. package/dist/commands/creatives.d.ts +4 -0
  41. package/dist/commands/creatives.js +49 -0
  42. package/dist/commands/diagnostics.d.ts +4 -0
  43. package/dist/commands/diagnostics.js +88 -0
  44. package/dist/commands/helpers.d.ts +13 -0
  45. package/dist/commands/helpers.js +50 -0
  46. package/dist/commands/launch.d.ts +4 -0
  47. package/dist/commands/launch.js +109 -0
  48. package/dist/commands/performance.d.ts +4 -0
  49. package/dist/commands/performance.js +55 -0
  50. package/dist/commands/pixel.d.ts +4 -0
  51. package/dist/commands/pixel.js +68 -0
  52. package/dist/commands/report.d.ts +4 -0
  53. package/dist/commands/report.js +30 -0
  54. package/dist/config/file-config.d.ts +6 -0
  55. package/dist/config/file-config.js +174 -0
  56. package/dist/config/types.d.ts +32 -0
  57. package/dist/config/types.js +1 -0
  58. package/dist/domain/account-scope.d.ts +7 -0
  59. package/dist/domain/account-scope.js +28 -0
  60. package/dist/domain/analytics.d.ts +52 -0
  61. package/dist/domain/analytics.js +125 -0
  62. package/dist/domain/approval-service.d.ts +10 -0
  63. package/dist/domain/approval-service.js +48 -0
  64. package/dist/domain/asset-feed-compiler.d.ts +43 -0
  65. package/dist/domain/asset-feed-compiler.js +104 -0
  66. package/dist/domain/launch-service.d.ts +200 -0
  67. package/dist/domain/launch-service.js +558 -0
  68. package/dist/domain/meta-ads-service.d.ts +620 -0
  69. package/dist/domain/meta-ads-service.js +841 -0
  70. package/dist/index.d.ts +2 -0
  71. package/dist/index.js +9 -0
  72. package/dist/output/render.d.ts +3 -0
  73. package/dist/output/render.js +103 -0
  74. package/dist/types.d.ts +42 -0
  75. package/dist/types.js +1 -0
  76. package/dist/utils/currency.d.ts +4 -0
  77. package/dist/utils/currency.js +40 -0
  78. package/dist/utils/date-range.d.ts +20 -0
  79. package/dist/utils/date-range.js +115 -0
  80. package/dist/utils/errors.d.ts +35 -0
  81. package/dist/utils/errors.js +68 -0
  82. package/dist/utils/ids.d.ts +4 -0
  83. package/dist/utils/ids.js +23 -0
  84. package/dist/utils/meta-placement-assets.d.ts +44 -0
  85. package/dist/utils/meta-placement-assets.js +315 -0
  86. package/dist/utils/security.d.ts +5 -0
  87. package/dist/utils/security.js +104 -0
  88. package/dist/validators/common.d.ts +10 -0
  89. package/dist/validators/common.js +56 -0
  90. package/dist/validators/create-spec.d.ts +373 -0
  91. package/dist/validators/create-spec.js +394 -0
  92. package/dist/validators/launch-spec.d.ts +229 -0
  93. package/dist/validators/launch-spec.js +371 -0
  94. package/docs/TECHNICAL.md +480 -0
  95. package/examples/README.md +29 -0
  96. package/examples/launch/assets/feed4x5.png +0 -0
  97. package/examples/launch/assets/story9x16.png +0 -0
  98. package/examples/launch/multi-format-launch.json +90 -0
  99. package/examples/single-object/ad.json +6 -0
  100. package/examples/single-object/adset.json +30 -0
  101. package/examples/single-object/campaign.json +6 -0
  102. package/examples/single-object/creative.json +19 -0
  103. package/package.json +62 -0
  104. package/skills/meta-cli-operator/SKILL.md +105 -0
  105. package/skills/meta-cli-operator/agents/openai.yaml +4 -0
  106. package/skills/meta-cli-operator/references/update-matrix.md +117 -0
@@ -0,0 +1,373 @@
1
+ import { z } from "zod";
2
+ export declare const pausedStatusSchema: z.ZodLiteral<"PAUSED">;
3
+ export declare const nonEmptyStringSchema: z.ZodString;
4
+ export declare const campaignObjectiveValues: readonly ["APP_INSTALLS", "BRAND_AWARENESS", "CONVERSIONS", "EVENT_RESPONSES", "LEAD_GENERATION", "LINK_CLICKS", "LOCAL_AWARENESS", "MESSAGES", "OFFER_CLAIMS", "OUTCOME_APP_PROMOTION", "OUTCOME_AWARENESS", "OUTCOME_ENGAGEMENT", "OUTCOME_LEADS", "OUTCOME_SALES", "OUTCOME_TRAFFIC", "PAGE_LIKES", "POST_ENGAGEMENT", "PRODUCT_CATALOG_SALES", "REACH", "STORE_VISITS", "VIDEO_VIEWS"];
5
+ export declare const bidStrategyValues: readonly ["LOWEST_COST_WITHOUT_CAP", "LOWEST_COST_WITH_BID_CAP", "COST_CAP"];
6
+ export declare const optimizationGoalValues: readonly ["APP_INSTALLS", "APP_INSTALLS_AND_OFFSITE_CONVERSIONS", "CONVERSATIONS", "ENGAGED_PAGE_VIEWS", "ENGAGED_USERS", "EVENT_RESPONSES", "IMPRESSIONS", "LANDING_PAGE_VIEWS", "LEAD_GENERATION", "LINK_CLICKS", "OFFSITE_CONVERSIONS", "PAGE_LIKES", "POST_ENGAGEMENT", "QUALITY_CALL", "QUALITY_LEAD", "REACH", "THRUPLAY", "VALUE", "VISIT_INSTAGRAM_PROFILE"];
7
+ export declare const campaignObjectiveSchema: z.ZodEnum<{
8
+ APP_INSTALLS: "APP_INSTALLS";
9
+ BRAND_AWARENESS: "BRAND_AWARENESS";
10
+ CONVERSIONS: "CONVERSIONS";
11
+ EVENT_RESPONSES: "EVENT_RESPONSES";
12
+ LEAD_GENERATION: "LEAD_GENERATION";
13
+ LINK_CLICKS: "LINK_CLICKS";
14
+ LOCAL_AWARENESS: "LOCAL_AWARENESS";
15
+ MESSAGES: "MESSAGES";
16
+ OFFER_CLAIMS: "OFFER_CLAIMS";
17
+ OUTCOME_APP_PROMOTION: "OUTCOME_APP_PROMOTION";
18
+ OUTCOME_AWARENESS: "OUTCOME_AWARENESS";
19
+ OUTCOME_ENGAGEMENT: "OUTCOME_ENGAGEMENT";
20
+ OUTCOME_LEADS: "OUTCOME_LEADS";
21
+ OUTCOME_SALES: "OUTCOME_SALES";
22
+ OUTCOME_TRAFFIC: "OUTCOME_TRAFFIC";
23
+ PAGE_LIKES: "PAGE_LIKES";
24
+ POST_ENGAGEMENT: "POST_ENGAGEMENT";
25
+ PRODUCT_CATALOG_SALES: "PRODUCT_CATALOG_SALES";
26
+ REACH: "REACH";
27
+ STORE_VISITS: "STORE_VISITS";
28
+ VIDEO_VIEWS: "VIDEO_VIEWS";
29
+ }>;
30
+ export declare const bidStrategySchema: z.ZodEnum<{
31
+ LOWEST_COST_WITHOUT_CAP: "LOWEST_COST_WITHOUT_CAP";
32
+ LOWEST_COST_WITH_BID_CAP: "LOWEST_COST_WITH_BID_CAP";
33
+ COST_CAP: "COST_CAP";
34
+ }>;
35
+ export declare const optimizationGoalSchema: z.ZodEnum<{
36
+ APP_INSTALLS: "APP_INSTALLS";
37
+ EVENT_RESPONSES: "EVENT_RESPONSES";
38
+ LEAD_GENERATION: "LEAD_GENERATION";
39
+ LINK_CLICKS: "LINK_CLICKS";
40
+ PAGE_LIKES: "PAGE_LIKES";
41
+ POST_ENGAGEMENT: "POST_ENGAGEMENT";
42
+ REACH: "REACH";
43
+ APP_INSTALLS_AND_OFFSITE_CONVERSIONS: "APP_INSTALLS_AND_OFFSITE_CONVERSIONS";
44
+ CONVERSATIONS: "CONVERSATIONS";
45
+ ENGAGED_PAGE_VIEWS: "ENGAGED_PAGE_VIEWS";
46
+ ENGAGED_USERS: "ENGAGED_USERS";
47
+ IMPRESSIONS: "IMPRESSIONS";
48
+ LANDING_PAGE_VIEWS: "LANDING_PAGE_VIEWS";
49
+ OFFSITE_CONVERSIONS: "OFFSITE_CONVERSIONS";
50
+ QUALITY_CALL: "QUALITY_CALL";
51
+ QUALITY_LEAD: "QUALITY_LEAD";
52
+ THRUPLAY: "THRUPLAY";
53
+ VALUE: "VALUE";
54
+ VISIT_INSTAGRAM_PROFILE: "VISIT_INSTAGRAM_PROFILE";
55
+ }>;
56
+ export declare const callToActionSchema: z.ZodEnum<{
57
+ SHOP_NOW: "SHOP_NOW";
58
+ LEARN_MORE: "LEARN_MORE";
59
+ SIGN_UP: "SIGN_UP";
60
+ }>;
61
+ export declare const targetingSpecSchema: z.ZodPipe<z.ZodObject<{
62
+ age_max: z.ZodOptional<z.ZodNumber>;
63
+ age_min: z.ZodOptional<z.ZodNumber>;
64
+ targeting_automation: z.ZodOptional<z.ZodObject<{
65
+ advantage_audience: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<0>, z.ZodLiteral<1>]>>;
66
+ individual_setting: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodLiteral<0>, z.ZodLiteral<1>]>>>;
67
+ }, z.core.$catchall<z.ZodUnknown>>>;
68
+ }, z.core.$catchall<z.ZodUnknown>>, z.ZodTransform<{
69
+ [x: string]: unknown;
70
+ age_max?: number | undefined;
71
+ age_min?: number | undefined;
72
+ targeting_automation?: {
73
+ [x: string]: unknown;
74
+ advantage_audience?: 0 | 1 | undefined;
75
+ individual_setting?: Record<string, 0 | 1> | undefined;
76
+ } | undefined;
77
+ }, {
78
+ [x: string]: unknown;
79
+ age_max?: number | undefined;
80
+ age_min?: number | undefined;
81
+ targeting_automation?: {
82
+ [x: string]: unknown;
83
+ advantage_audience?: 0 | 1 | undefined;
84
+ individual_setting?: Record<string, 0 | 1> | undefined;
85
+ } | undefined;
86
+ }>>;
87
+ export declare const promotedObjectSchema: z.ZodObject<{
88
+ applicationId: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
89
+ customConversionId: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
90
+ customEventType: z.ZodOptional<z.ZodString>;
91
+ eventId: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
92
+ instagramActorId: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
93
+ objectStoreUrl: z.ZodOptional<z.ZodString>;
94
+ offlineConversionDataSetId: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
95
+ pageId: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
96
+ pixelId: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
97
+ productSetId: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
98
+ whatsappPhoneNumber: z.ZodOptional<z.ZodString>;
99
+ }, z.core.$strict>;
100
+ export declare const creativePlatformCustomizationOverrideSchema: z.ZodObject<{
101
+ captionIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
102
+ imageCrops: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodNumber>>>;
103
+ imageHash: z.ZodOptional<z.ZodString>;
104
+ imageUrl: z.ZodOptional<z.ZodString>;
105
+ videoId: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
106
+ }, z.core.$strict>;
107
+ export declare const creativeFormatOverrideSchema: z.ZodObject<{
108
+ captionIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
109
+ imageCrops: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodNumber>>>;
110
+ imageHash: z.ZodOptional<z.ZodString>;
111
+ imageUrl: z.ZodOptional<z.ZodString>;
112
+ videoId: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
113
+ }, z.core.$strict>;
114
+ export declare const creativeFormatsSchema: z.ZodObject<{
115
+ feed4x5: z.ZodOptional<z.ZodObject<{
116
+ captionIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
117
+ imageCrops: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodNumber>>>;
118
+ imageHash: z.ZodOptional<z.ZodString>;
119
+ imageUrl: z.ZodOptional<z.ZodString>;
120
+ videoId: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
121
+ }, z.core.$strict>>;
122
+ square1x1: z.ZodOptional<z.ZodObject<{
123
+ captionIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
124
+ imageCrops: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodNumber>>>;
125
+ imageHash: z.ZodOptional<z.ZodString>;
126
+ imageUrl: z.ZodOptional<z.ZodString>;
127
+ videoId: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
128
+ }, z.core.$strict>>;
129
+ story9x16: z.ZodOptional<z.ZodObject<{
130
+ captionIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
131
+ imageCrops: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodNumber>>>;
132
+ imageHash: z.ZodOptional<z.ZodString>;
133
+ imageUrl: z.ZodOptional<z.ZodString>;
134
+ videoId: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
135
+ }, z.core.$strict>>;
136
+ }, z.core.$strict>;
137
+ export declare const creativePlatformCustomizationsSchema: z.ZodObject<{
138
+ instagram: z.ZodOptional<z.ZodObject<{
139
+ captionIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
140
+ imageCrops: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodNumber>>>;
141
+ imageHash: z.ZodOptional<z.ZodString>;
142
+ imageUrl: z.ZodOptional<z.ZodString>;
143
+ videoId: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
144
+ }, z.core.$strict>>;
145
+ }, z.core.$strict>;
146
+ export declare const campaignCreateSpecSchema: z.ZodObject<{
147
+ bidStrategy: z.ZodOptional<z.ZodEnum<{
148
+ LOWEST_COST_WITHOUT_CAP: "LOWEST_COST_WITHOUT_CAP";
149
+ LOWEST_COST_WITH_BID_CAP: "LOWEST_COST_WITH_BID_CAP";
150
+ COST_CAP: "COST_CAP";
151
+ }>>;
152
+ dailyBudget: z.ZodOptional<z.ZodNumber>;
153
+ lifetimeBudget: z.ZodOptional<z.ZodNumber>;
154
+ name: z.ZodString;
155
+ objective: z.ZodEnum<{
156
+ APP_INSTALLS: "APP_INSTALLS";
157
+ BRAND_AWARENESS: "BRAND_AWARENESS";
158
+ CONVERSIONS: "CONVERSIONS";
159
+ EVENT_RESPONSES: "EVENT_RESPONSES";
160
+ LEAD_GENERATION: "LEAD_GENERATION";
161
+ LINK_CLICKS: "LINK_CLICKS";
162
+ LOCAL_AWARENESS: "LOCAL_AWARENESS";
163
+ MESSAGES: "MESSAGES";
164
+ OFFER_CLAIMS: "OFFER_CLAIMS";
165
+ OUTCOME_APP_PROMOTION: "OUTCOME_APP_PROMOTION";
166
+ OUTCOME_AWARENESS: "OUTCOME_AWARENESS";
167
+ OUTCOME_ENGAGEMENT: "OUTCOME_ENGAGEMENT";
168
+ OUTCOME_LEADS: "OUTCOME_LEADS";
169
+ OUTCOME_SALES: "OUTCOME_SALES";
170
+ OUTCOME_TRAFFIC: "OUTCOME_TRAFFIC";
171
+ PAGE_LIKES: "PAGE_LIKES";
172
+ POST_ENGAGEMENT: "POST_ENGAGEMENT";
173
+ PRODUCT_CATALOG_SALES: "PRODUCT_CATALOG_SALES";
174
+ REACH: "REACH";
175
+ STORE_VISITS: "STORE_VISITS";
176
+ VIDEO_VIEWS: "VIDEO_VIEWS";
177
+ }>;
178
+ specialAdCategories: z.ZodDefault<z.ZodArray<z.ZodString>>;
179
+ status: z.ZodOptional<z.ZodLiteral<"PAUSED">>;
180
+ }, z.core.$strict>;
181
+ export declare const adSetCreateSpecSchema: z.ZodObject<{
182
+ bidAmount: z.ZodOptional<z.ZodNumber>;
183
+ bidStrategy: z.ZodOptional<z.ZodEnum<{
184
+ LOWEST_COST_WITHOUT_CAP: "LOWEST_COST_WITHOUT_CAP";
185
+ LOWEST_COST_WITH_BID_CAP: "LOWEST_COST_WITH_BID_CAP";
186
+ COST_CAP: "COST_CAP";
187
+ }>>;
188
+ billingEvent: z.ZodEnum<{
189
+ IMPRESSIONS: "IMPRESSIONS";
190
+ CLICKS: "CLICKS";
191
+ }>;
192
+ campaignId: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
193
+ dailyBudget: z.ZodOptional<z.ZodNumber>;
194
+ endTime: z.ZodOptional<z.ZodString>;
195
+ lifetimeBudget: z.ZodOptional<z.ZodNumber>;
196
+ name: z.ZodString;
197
+ optimizationGoal: z.ZodEnum<{
198
+ APP_INSTALLS: "APP_INSTALLS";
199
+ EVENT_RESPONSES: "EVENT_RESPONSES";
200
+ LEAD_GENERATION: "LEAD_GENERATION";
201
+ LINK_CLICKS: "LINK_CLICKS";
202
+ PAGE_LIKES: "PAGE_LIKES";
203
+ POST_ENGAGEMENT: "POST_ENGAGEMENT";
204
+ REACH: "REACH";
205
+ APP_INSTALLS_AND_OFFSITE_CONVERSIONS: "APP_INSTALLS_AND_OFFSITE_CONVERSIONS";
206
+ CONVERSATIONS: "CONVERSATIONS";
207
+ ENGAGED_PAGE_VIEWS: "ENGAGED_PAGE_VIEWS";
208
+ ENGAGED_USERS: "ENGAGED_USERS";
209
+ IMPRESSIONS: "IMPRESSIONS";
210
+ LANDING_PAGE_VIEWS: "LANDING_PAGE_VIEWS";
211
+ OFFSITE_CONVERSIONS: "OFFSITE_CONVERSIONS";
212
+ QUALITY_CALL: "QUALITY_CALL";
213
+ QUALITY_LEAD: "QUALITY_LEAD";
214
+ THRUPLAY: "THRUPLAY";
215
+ VALUE: "VALUE";
216
+ VISIT_INSTAGRAM_PROFILE: "VISIT_INSTAGRAM_PROFILE";
217
+ }>;
218
+ promotedObject: z.ZodObject<{
219
+ applicationId: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
220
+ customConversionId: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
221
+ customEventType: z.ZodOptional<z.ZodString>;
222
+ eventId: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
223
+ instagramActorId: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
224
+ objectStoreUrl: z.ZodOptional<z.ZodString>;
225
+ offlineConversionDataSetId: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
226
+ pageId: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
227
+ pixelId: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
228
+ productSetId: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
229
+ whatsappPhoneNumber: z.ZodOptional<z.ZodString>;
230
+ }, z.core.$strict>;
231
+ startTime: z.ZodOptional<z.ZodString>;
232
+ status: z.ZodOptional<z.ZodLiteral<"PAUSED">>;
233
+ targeting: z.ZodPipe<z.ZodObject<{
234
+ age_max: z.ZodOptional<z.ZodNumber>;
235
+ age_min: z.ZodOptional<z.ZodNumber>;
236
+ targeting_automation: z.ZodOptional<z.ZodObject<{
237
+ advantage_audience: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<0>, z.ZodLiteral<1>]>>;
238
+ individual_setting: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodLiteral<0>, z.ZodLiteral<1>]>>>;
239
+ }, z.core.$catchall<z.ZodUnknown>>>;
240
+ }, z.core.$catchall<z.ZodUnknown>>, z.ZodTransform<{
241
+ [x: string]: unknown;
242
+ age_max?: number | undefined;
243
+ age_min?: number | undefined;
244
+ targeting_automation?: {
245
+ [x: string]: unknown;
246
+ advantage_audience?: 0 | 1 | undefined;
247
+ individual_setting?: Record<string, 0 | 1> | undefined;
248
+ } | undefined;
249
+ }, {
250
+ [x: string]: unknown;
251
+ age_max?: number | undefined;
252
+ age_min?: number | undefined;
253
+ targeting_automation?: {
254
+ [x: string]: unknown;
255
+ advantage_audience?: 0 | 1 | undefined;
256
+ individual_setting?: Record<string, 0 | 1> | undefined;
257
+ } | undefined;
258
+ }>>;
259
+ }, z.core.$strict>;
260
+ export declare const creativeCreateSpecSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
261
+ formats: z.ZodOptional<z.ZodObject<{
262
+ feed4x5: z.ZodOptional<z.ZodObject<{
263
+ captionIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
264
+ imageCrops: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodNumber>>>;
265
+ imageHash: z.ZodOptional<z.ZodString>;
266
+ imageUrl: z.ZodOptional<z.ZodString>;
267
+ videoId: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
268
+ }, z.core.$strict>>;
269
+ square1x1: z.ZodOptional<z.ZodObject<{
270
+ captionIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
271
+ imageCrops: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodNumber>>>;
272
+ imageHash: z.ZodOptional<z.ZodString>;
273
+ imageUrl: z.ZodOptional<z.ZodString>;
274
+ videoId: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
275
+ }, z.core.$strict>>;
276
+ story9x16: z.ZodOptional<z.ZodObject<{
277
+ captionIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
278
+ imageCrops: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodNumber>>>;
279
+ imageHash: z.ZodOptional<z.ZodString>;
280
+ imageUrl: z.ZodOptional<z.ZodString>;
281
+ videoId: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
282
+ }, z.core.$strict>>;
283
+ }, z.core.$strict>>;
284
+ imageHash: z.ZodOptional<z.ZodString>;
285
+ kind: z.ZodLiteral<"link-image">;
286
+ linkData: z.ZodObject<{
287
+ callToAction: z.ZodOptional<z.ZodEnum<{
288
+ SHOP_NOW: "SHOP_NOW";
289
+ LEARN_MORE: "LEARN_MORE";
290
+ SIGN_UP: "SIGN_UP";
291
+ }>>;
292
+ description: z.ZodOptional<z.ZodString>;
293
+ headline: z.ZodOptional<z.ZodString>;
294
+ link: z.ZodString;
295
+ message: z.ZodString;
296
+ }, z.core.$strict>;
297
+ name: z.ZodOptional<z.ZodString>;
298
+ pageId: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
299
+ platformCustomizations: z.ZodOptional<z.ZodObject<{
300
+ instagram: z.ZodOptional<z.ZodObject<{
301
+ captionIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
302
+ imageCrops: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodNumber>>>;
303
+ imageHash: z.ZodOptional<z.ZodString>;
304
+ imageUrl: z.ZodOptional<z.ZodString>;
305
+ videoId: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
306
+ }, z.core.$strict>>;
307
+ }, z.core.$strict>>;
308
+ status: z.ZodOptional<z.ZodLiteral<"PAUSED">>;
309
+ }, z.core.$strict>, z.ZodObject<{
310
+ formats: z.ZodOptional<z.ZodObject<{
311
+ feed4x5: z.ZodOptional<z.ZodObject<{
312
+ captionIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
313
+ imageCrops: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodNumber>>>;
314
+ imageHash: z.ZodOptional<z.ZodString>;
315
+ imageUrl: z.ZodOptional<z.ZodString>;
316
+ videoId: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
317
+ }, z.core.$strict>>;
318
+ square1x1: z.ZodOptional<z.ZodObject<{
319
+ captionIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
320
+ imageCrops: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodNumber>>>;
321
+ imageHash: z.ZodOptional<z.ZodString>;
322
+ imageUrl: z.ZodOptional<z.ZodString>;
323
+ videoId: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
324
+ }, z.core.$strict>>;
325
+ story9x16: z.ZodOptional<z.ZodObject<{
326
+ captionIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
327
+ imageCrops: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodNumber>>>;
328
+ imageHash: z.ZodOptional<z.ZodString>;
329
+ imageUrl: z.ZodOptional<z.ZodString>;
330
+ videoId: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
331
+ }, z.core.$strict>>;
332
+ }, z.core.$strict>>;
333
+ kind: z.ZodLiteral<"video-link">;
334
+ name: z.ZodOptional<z.ZodString>;
335
+ pageId: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
336
+ platformCustomizations: z.ZodOptional<z.ZodObject<{
337
+ instagram: z.ZodOptional<z.ZodObject<{
338
+ captionIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
339
+ imageCrops: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodNumber>>>;
340
+ imageHash: z.ZodOptional<z.ZodString>;
341
+ imageUrl: z.ZodOptional<z.ZodString>;
342
+ videoId: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
343
+ }, z.core.$strict>>;
344
+ }, z.core.$strict>>;
345
+ status: z.ZodOptional<z.ZodLiteral<"PAUSED">>;
346
+ videoData: z.ZodObject<{
347
+ callToAction: z.ZodOptional<z.ZodEnum<{
348
+ SHOP_NOW: "SHOP_NOW";
349
+ LEARN_MORE: "LEARN_MORE";
350
+ SIGN_UP: "SIGN_UP";
351
+ }>>;
352
+ description: z.ZodOptional<z.ZodString>;
353
+ link: z.ZodString;
354
+ message: z.ZodString;
355
+ title: z.ZodOptional<z.ZodString>;
356
+ }, z.core.$strict>;
357
+ videoId: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
358
+ }, z.core.$strict>], "kind">;
359
+ export declare const adCreateSpecSchema: z.ZodObject<{
360
+ adSetId: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
361
+ creativeId: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
362
+ name: z.ZodString;
363
+ status: z.ZodOptional<z.ZodLiteral<"PAUSED">>;
364
+ }, z.core.$strict>;
365
+ export type CampaignCreateSpec = z.infer<typeof campaignCreateSpecSchema>;
366
+ export type AdSetCreateSpec = z.infer<typeof adSetCreateSpecSchema>;
367
+ export type CreativeCreateSpec = z.infer<typeof creativeCreateSpecSchema>;
368
+ export type AdCreateSpec = z.infer<typeof adCreateSpecSchema>;
369
+ export declare function resolveExistingFilePath(filePath: string, label: string, baseDir?: string): Promise<string>;
370
+ export declare function readSpecFile<T>(specPath: string, schema: z.ZodSchema<T>, label: string): Promise<{
371
+ spec: T;
372
+ specPath: string;
373
+ }>;