ugcinc 4.27.0 → 4.28.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.
@@ -3387,7 +3387,7 @@ export declare const measureLayoutResultSchema: z.ZodObject<{
3387
3387
  }>;
3388
3388
  export type SampleColorsResult = z.infer<typeof sampleColorsResultSchema>;
3389
3389
  export type MeasureLayoutResult = z.infer<typeof measureLayoutResultSchema>;
3390
- export declare const matchTextStyleSchema: z.ZodObject<{
3390
+ export declare const matchTextStyleSchema: z.ZodEffects<z.ZodObject<{
3391
3391
  url: z.ZodEffects<z.ZodString, string, string>;
3392
3392
  box: z.ZodEffects<z.ZodObject<{
3393
3393
  x: z.ZodNumber;
@@ -3415,6 +3415,7 @@ export declare const matchTextStyleSchema: z.ZodObject<{
3415
3415
  x: number;
3416
3416
  y: number;
3417
3417
  }>;
3418
+ renderer: z.ZodOptional<z.ZodEnum<["auto", "image-editor", "tiktok-native"]>>;
3418
3419
  text: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
3419
3420
  }, "strict", z.ZodTypeAny, {
3420
3421
  url: string;
@@ -3425,6 +3426,7 @@ export declare const matchTextStyleSchema: z.ZodObject<{
3425
3426
  y: number;
3426
3427
  };
3427
3428
  text?: string | undefined;
3429
+ renderer?: "auto" | "image-editor" | "tiktok-native" | undefined;
3428
3430
  }, {
3429
3431
  url: string;
3430
3432
  box: {
@@ -3434,10 +3436,31 @@ export declare const matchTextStyleSchema: z.ZodObject<{
3434
3436
  y: number;
3435
3437
  };
3436
3438
  text?: string | undefined;
3439
+ renderer?: "auto" | "image-editor" | "tiktok-native" | undefined;
3440
+ }>, {
3441
+ url: string;
3442
+ box: {
3443
+ width: number;
3444
+ height: number;
3445
+ x: number;
3446
+ y: number;
3447
+ };
3448
+ text?: string | undefined;
3449
+ renderer?: "auto" | "image-editor" | "tiktok-native" | undefined;
3450
+ }, {
3451
+ url: string;
3452
+ box: {
3453
+ width: number;
3454
+ height: number;
3455
+ x: number;
3456
+ y: number;
3457
+ };
3458
+ text?: string | undefined;
3459
+ renderer?: "auto" | "image-editor" | "tiktok-native" | undefined;
3437
3460
  }>;
3438
3461
  export type MatchTextStyleParams = z.input<typeof matchTextStyleSchema>;
3439
3462
  export declare const matchTextStyleResultSchema: z.ZodObject<{
3440
- version: z.ZodLiteral<1>;
3463
+ version: z.ZodUnion<[z.ZodLiteral<1>, z.ZodLiteral<2>]>;
3441
3464
  operation: z.ZodLiteral<"match_text_style">;
3442
3465
  source: z.ZodObject<{
3443
3466
  encodedWidth: z.ZodNumber;
@@ -3489,12 +3512,12 @@ export declare const matchTextStyleResultSchema: z.ZodObject<{
3489
3512
  x: number;
3490
3513
  y: number;
3491
3514
  }>;
3492
- surface: z.ZodLiteral<"image-editor-element">;
3515
+ surface: z.ZodEnum<["image-editor-element", "native-text-sticker"]>;
3493
3516
  status: z.ZodEnum<["fitted", "unavailable"]>;
3494
3517
  reason: z.ZodNullable<z.ZodString>;
3495
3518
  text: z.ZodNullable<z.ZodString>;
3496
3519
  textSource: z.ZodEnum<["supplied", "ocr"]>;
3497
- renderer: z.ZodObject<{
3520
+ renderer: z.ZodUnion<[z.ZodObject<{
3498
3521
  name: z.ZodLiteral<"UGC-ImageEditorComposition">;
3499
3522
  ugcVersion: z.ZodString;
3500
3523
  fonts: z.ZodArray<z.ZodString, "many">;
@@ -3512,7 +3535,22 @@ export declare const matchTextStyleResultSchema: z.ZodObject<{
3512
3535
  fonts: string[];
3513
3536
  fontHashes: Record<string, string>;
3514
3537
  maxRenders: number;
3515
- }>;
3538
+ }>, z.ZodObject<{
3539
+ name: z.ZodLiteral<"UGC-NativeTikTok">;
3540
+ profile: z.ZodLiteral<"tiktok-classic-ios-47">;
3541
+ fontHashes: z.ZodRecord<z.ZodString, z.ZodString>;
3542
+ maxRenders: z.ZodNumber;
3543
+ }, "strip", z.ZodTypeAny, {
3544
+ profile: "tiktok-classic-ios-47";
3545
+ name: "UGC-NativeTikTok";
3546
+ fontHashes: Record<string, string>;
3547
+ maxRenders: number;
3548
+ }, {
3549
+ profile: "tiktok-classic-ios-47";
3550
+ name: "UGC-NativeTikTok";
3551
+ fontHashes: Record<string, string>;
3552
+ maxRenders: number;
3553
+ }>]>;
3516
3554
  candidates: z.ZodArray<z.ZodObject<{
3517
3555
  element: z.ZodObject<{
3518
3556
  id: z.ZodString;
@@ -3875,6 +3913,200 @@ export declare const matchTextStyleResultSchema: z.ZodObject<{
3875
3913
  fontIdentity: "unverified";
3876
3914
  quality: "close" | "approximate";
3877
3915
  }>, "many">;
3916
+ nativeResult: z.ZodOptional<z.ZodObject<{
3917
+ profile: z.ZodLiteral<"tiktok-classic-ios-47">;
3918
+ settings: z.ZodObject<{
3919
+ profile: z.ZodDefault<z.ZodLiteral<"tiktok-classic-ios-47">>;
3920
+ text: z.ZodEffects<z.ZodString, string, string>;
3921
+ fontSizePt: z.ZodDefault<z.ZodNumber>;
3922
+ canvasWidthPt: z.ZodDefault<z.ZodNumber>;
3923
+ canvasHeightPt: z.ZodDefault<z.ZodNumber>;
3924
+ containerWidthPt: z.ZodDefault<z.ZodNumber>;
3925
+ containerHeightPt: z.ZodOptional<z.ZodNumber>;
3926
+ originPt: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
3927
+ viewFontSizePt: z.ZodOptional<z.ZodNumber>;
3928
+ }, "strict", z.ZodTypeAny, {
3929
+ text: string;
3930
+ profile: "tiktok-classic-ios-47";
3931
+ fontSizePt: number;
3932
+ canvasWidthPt: number;
3933
+ canvasHeightPt: number;
3934
+ containerWidthPt: number;
3935
+ originPt: [number, number];
3936
+ containerHeightPt?: number | undefined;
3937
+ viewFontSizePt?: number | undefined;
3938
+ }, {
3939
+ text: string;
3940
+ profile?: "tiktok-classic-ios-47" | undefined;
3941
+ fontSizePt?: number | undefined;
3942
+ canvasWidthPt?: number | undefined;
3943
+ canvasHeightPt?: number | undefined;
3944
+ containerWidthPt?: number | undefined;
3945
+ containerHeightPt?: number | undefined;
3946
+ originPt?: [number, number] | undefined;
3947
+ viewFontSizePt?: number | undefined;
3948
+ }>;
3949
+ stickerUrl: z.ZodEffects<z.ZodString, string, string>;
3950
+ composition: z.ZodObject<{
3951
+ x: z.ZodNumber;
3952
+ y: z.ZodNumber;
3953
+ width: z.ZodNumber;
3954
+ height: z.ZodNumber;
3955
+ scale: z.ZodNumber;
3956
+ }, "strip", z.ZodTypeAny, {
3957
+ width: number;
3958
+ height: number;
3959
+ x: number;
3960
+ y: number;
3961
+ scale: number;
3962
+ }, {
3963
+ width: number;
3964
+ height: number;
3965
+ x: number;
3966
+ y: number;
3967
+ scale: number;
3968
+ }>;
3969
+ maskIoU: z.ZodNumber;
3970
+ foregroundMae: z.ZodNumber;
3971
+ fontIdentity: z.ZodLiteral<"unverified">;
3972
+ quality: z.ZodEnum<["close", "approximate"]>;
3973
+ diagnostics: z.ZodObject<{
3974
+ method: z.ZodLiteral<"local-white-fill-dark-outline">;
3975
+ textPixelCount: z.ZodNumber;
3976
+ outlinePixelCount: z.ZodNumber;
3977
+ backgroundExcluded: z.ZodLiteral<true>;
3978
+ observedLineCount: z.ZodNumber;
3979
+ expectedLineCount: z.ZodNumber;
3980
+ renderCount: z.ZodNumber;
3981
+ clipped: z.ZodBoolean;
3982
+ comparison: z.ZodLiteral<"segmented-text-and-outline">;
3983
+ resampling: z.ZodEnum<["none", "lanczos3"]>;
3984
+ maskMetric: z.ZodLiteral<"white-fill-iou">;
3985
+ outlineIoU: z.ZodNumber;
3986
+ emojiPixelCount: z.ZodNumber;
3987
+ residualMetric: z.ZodLiteral<"segmented-text-outline-and-warm-emoji">;
3988
+ foregroundMetric: z.ZodLiteral<"estimated-background-composite-MAE">;
3989
+ }, "strip", z.ZodTypeAny, {
3990
+ method: "local-white-fill-dark-outline";
3991
+ textPixelCount: number;
3992
+ outlinePixelCount: number;
3993
+ backgroundExcluded: true;
3994
+ observedLineCount: number;
3995
+ expectedLineCount: number;
3996
+ renderCount: number;
3997
+ clipped: boolean;
3998
+ comparison: "segmented-text-and-outline";
3999
+ resampling: "none" | "lanczos3";
4000
+ maskMetric: "white-fill-iou";
4001
+ outlineIoU: number;
4002
+ emojiPixelCount: number;
4003
+ residualMetric: "segmented-text-outline-and-warm-emoji";
4004
+ foregroundMetric: "estimated-background-composite-MAE";
4005
+ }, {
4006
+ method: "local-white-fill-dark-outline";
4007
+ textPixelCount: number;
4008
+ outlinePixelCount: number;
4009
+ backgroundExcluded: true;
4010
+ observedLineCount: number;
4011
+ expectedLineCount: number;
4012
+ renderCount: number;
4013
+ clipped: boolean;
4014
+ comparison: "segmented-text-and-outline";
4015
+ resampling: "none" | "lanczos3";
4016
+ maskMetric: "white-fill-iou";
4017
+ outlineIoU: number;
4018
+ emojiPixelCount: number;
4019
+ residualMetric: "segmented-text-outline-and-warm-emoji";
4020
+ foregroundMetric: "estimated-background-composite-MAE";
4021
+ }>;
4022
+ }, "strip", z.ZodTypeAny, {
4023
+ profile: "tiktok-classic-ios-47";
4024
+ settings: {
4025
+ text: string;
4026
+ profile: "tiktok-classic-ios-47";
4027
+ fontSizePt: number;
4028
+ canvasWidthPt: number;
4029
+ canvasHeightPt: number;
4030
+ containerWidthPt: number;
4031
+ originPt: [number, number];
4032
+ containerHeightPt?: number | undefined;
4033
+ viewFontSizePt?: number | undefined;
4034
+ };
4035
+ maskIoU: number;
4036
+ foregroundMae: number;
4037
+ fontIdentity: "unverified";
4038
+ quality: "close" | "approximate";
4039
+ stickerUrl: string;
4040
+ composition: {
4041
+ width: number;
4042
+ height: number;
4043
+ x: number;
4044
+ y: number;
4045
+ scale: number;
4046
+ };
4047
+ diagnostics: {
4048
+ method: "local-white-fill-dark-outline";
4049
+ textPixelCount: number;
4050
+ outlinePixelCount: number;
4051
+ backgroundExcluded: true;
4052
+ observedLineCount: number;
4053
+ expectedLineCount: number;
4054
+ renderCount: number;
4055
+ clipped: boolean;
4056
+ comparison: "segmented-text-and-outline";
4057
+ resampling: "none" | "lanczos3";
4058
+ maskMetric: "white-fill-iou";
4059
+ outlineIoU: number;
4060
+ emojiPixelCount: number;
4061
+ residualMetric: "segmented-text-outline-and-warm-emoji";
4062
+ foregroundMetric: "estimated-background-composite-MAE";
4063
+ };
4064
+ }, {
4065
+ profile: "tiktok-classic-ios-47";
4066
+ settings: {
4067
+ text: string;
4068
+ profile?: "tiktok-classic-ios-47" | undefined;
4069
+ fontSizePt?: number | undefined;
4070
+ canvasWidthPt?: number | undefined;
4071
+ canvasHeightPt?: number | undefined;
4072
+ containerWidthPt?: number | undefined;
4073
+ containerHeightPt?: number | undefined;
4074
+ originPt?: [number, number] | undefined;
4075
+ viewFontSizePt?: number | undefined;
4076
+ };
4077
+ maskIoU: number;
4078
+ foregroundMae: number;
4079
+ fontIdentity: "unverified";
4080
+ quality: "close" | "approximate";
4081
+ stickerUrl: string;
4082
+ composition: {
4083
+ width: number;
4084
+ height: number;
4085
+ x: number;
4086
+ y: number;
4087
+ scale: number;
4088
+ };
4089
+ diagnostics: {
4090
+ method: "local-white-fill-dark-outline";
4091
+ textPixelCount: number;
4092
+ outlinePixelCount: number;
4093
+ backgroundExcluded: true;
4094
+ observedLineCount: number;
4095
+ expectedLineCount: number;
4096
+ renderCount: number;
4097
+ clipped: boolean;
4098
+ comparison: "segmented-text-and-outline";
4099
+ resampling: "none" | "lanczos3";
4100
+ maskMetric: "white-fill-iou";
4101
+ outlineIoU: number;
4102
+ emojiPixelCount: number;
4103
+ residualMetric: "segmented-text-outline-and-warm-emoji";
4104
+ foregroundMetric: "estimated-background-composite-MAE";
4105
+ };
4106
+ }>>;
4107
+ reasonCode: z.ZodOptional<z.ZodNullable<z.ZodString>>;
4108
+ nextActions: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
4109
+ fitAttempted: z.ZodOptional<z.ZodBoolean>;
3878
4110
  renders: z.ZodNumber;
3879
4111
  backgroundColor: z.ZodString;
3880
4112
  warnings: z.ZodArray<z.ZodString, "many">;
@@ -3883,7 +4115,7 @@ export declare const matchTextStyleResultSchema: z.ZodObject<{
3883
4115
  }, "strip", z.ZodTypeAny, {
3884
4116
  status: "unavailable" | "fitted";
3885
4117
  text: string | null;
3886
- version: 1;
4118
+ version: 1 | 2;
3887
4119
  operation: "match_text_style";
3888
4120
  source: {
3889
4121
  encodedWidth: number;
@@ -3906,7 +4138,7 @@ export declare const matchTextStyleResultSchema: z.ZodObject<{
3906
4138
  manifestUrl: string;
3907
4139
  warnings: string[];
3908
4140
  previewUrl: string;
3909
- surface: "image-editor-element";
4141
+ surface: "image-editor-element" | "native-text-sticker";
3910
4142
  reason: string | null;
3911
4143
  textSource: "supplied" | "ocr";
3912
4144
  renderer: {
@@ -3915,6 +4147,11 @@ export declare const matchTextStyleResultSchema: z.ZodObject<{
3915
4147
  fonts: string[];
3916
4148
  fontHashes: Record<string, string>;
3917
4149
  maxRenders: number;
4150
+ } | {
4151
+ profile: "tiktok-classic-ios-47";
4152
+ name: "UGC-NativeTikTok";
4153
+ fontHashes: Record<string, string>;
4154
+ maxRenders: number;
3918
4155
  };
3919
4156
  backgroundColor: string;
3920
4157
  candidates: {
@@ -3984,10 +4221,56 @@ export declare const matchTextStyleResultSchema: z.ZodObject<{
3984
4221
  quality: "close" | "approximate";
3985
4222
  }[];
3986
4223
  renders: number;
4224
+ nativeResult?: {
4225
+ profile: "tiktok-classic-ios-47";
4226
+ settings: {
4227
+ text: string;
4228
+ profile: "tiktok-classic-ios-47";
4229
+ fontSizePt: number;
4230
+ canvasWidthPt: number;
4231
+ canvasHeightPt: number;
4232
+ containerWidthPt: number;
4233
+ originPt: [number, number];
4234
+ containerHeightPt?: number | undefined;
4235
+ viewFontSizePt?: number | undefined;
4236
+ };
4237
+ maskIoU: number;
4238
+ foregroundMae: number;
4239
+ fontIdentity: "unverified";
4240
+ quality: "close" | "approximate";
4241
+ stickerUrl: string;
4242
+ composition: {
4243
+ width: number;
4244
+ height: number;
4245
+ x: number;
4246
+ y: number;
4247
+ scale: number;
4248
+ };
4249
+ diagnostics: {
4250
+ method: "local-white-fill-dark-outline";
4251
+ textPixelCount: number;
4252
+ outlinePixelCount: number;
4253
+ backgroundExcluded: true;
4254
+ observedLineCount: number;
4255
+ expectedLineCount: number;
4256
+ renderCount: number;
4257
+ clipped: boolean;
4258
+ comparison: "segmented-text-and-outline";
4259
+ resampling: "none" | "lanczos3";
4260
+ maskMetric: "white-fill-iou";
4261
+ outlineIoU: number;
4262
+ emojiPixelCount: number;
4263
+ residualMetric: "segmented-text-outline-and-warm-emoji";
4264
+ foregroundMetric: "estimated-background-composite-MAE";
4265
+ };
4266
+ } | undefined;
4267
+ reasonCode?: string | null | undefined;
4268
+ nextActions?: string[] | undefined;
4269
+ fitAttempted?: boolean | undefined;
3987
4270
  }, {
3988
4271
  status: "unavailable" | "fitted";
3989
4272
  text: string | null;
3990
- version: 1;
4273
+ version: 1 | 2;
3991
4274
  operation: "match_text_style";
3992
4275
  source: {
3993
4276
  encodedWidth: number;
@@ -4010,7 +4293,7 @@ export declare const matchTextStyleResultSchema: z.ZodObject<{
4010
4293
  manifestUrl: string;
4011
4294
  warnings: string[];
4012
4295
  previewUrl: string;
4013
- surface: "image-editor-element";
4296
+ surface: "image-editor-element" | "native-text-sticker";
4014
4297
  reason: string | null;
4015
4298
  textSource: "supplied" | "ocr";
4016
4299
  renderer: {
@@ -4019,6 +4302,11 @@ export declare const matchTextStyleResultSchema: z.ZodObject<{
4019
4302
  fonts: string[];
4020
4303
  fontHashes: Record<string, string>;
4021
4304
  maxRenders: number;
4305
+ } | {
4306
+ profile: "tiktok-classic-ios-47";
4307
+ name: "UGC-NativeTikTok";
4308
+ fontHashes: Record<string, string>;
4309
+ maxRenders: number;
4022
4310
  };
4023
4311
  backgroundColor: string;
4024
4312
  candidates: {
@@ -4088,9 +4376,55 @@ export declare const matchTextStyleResultSchema: z.ZodObject<{
4088
4376
  quality: "close" | "approximate";
4089
4377
  }[];
4090
4378
  renders: number;
4379
+ nativeResult?: {
4380
+ profile: "tiktok-classic-ios-47";
4381
+ settings: {
4382
+ text: string;
4383
+ profile?: "tiktok-classic-ios-47" | undefined;
4384
+ fontSizePt?: number | undefined;
4385
+ canvasWidthPt?: number | undefined;
4386
+ canvasHeightPt?: number | undefined;
4387
+ containerWidthPt?: number | undefined;
4388
+ containerHeightPt?: number | undefined;
4389
+ originPt?: [number, number] | undefined;
4390
+ viewFontSizePt?: number | undefined;
4391
+ };
4392
+ maskIoU: number;
4393
+ foregroundMae: number;
4394
+ fontIdentity: "unverified";
4395
+ quality: "close" | "approximate";
4396
+ stickerUrl: string;
4397
+ composition: {
4398
+ width: number;
4399
+ height: number;
4400
+ x: number;
4401
+ y: number;
4402
+ scale: number;
4403
+ };
4404
+ diagnostics: {
4405
+ method: "local-white-fill-dark-outline";
4406
+ textPixelCount: number;
4407
+ outlinePixelCount: number;
4408
+ backgroundExcluded: true;
4409
+ observedLineCount: number;
4410
+ expectedLineCount: number;
4411
+ renderCount: number;
4412
+ clipped: boolean;
4413
+ comparison: "segmented-text-and-outline";
4414
+ resampling: "none" | "lanczos3";
4415
+ maskMetric: "white-fill-iou";
4416
+ outlineIoU: number;
4417
+ emojiPixelCount: number;
4418
+ residualMetric: "segmented-text-outline-and-warm-emoji";
4419
+ foregroundMetric: "estimated-background-composite-MAE";
4420
+ };
4421
+ } | undefined;
4422
+ reasonCode?: string | null | undefined;
4423
+ nextActions?: string[] | undefined;
4424
+ fitAttempted?: boolean | undefined;
4091
4425
  }>;
4092
4426
  export type MatchTextStyleResult = z.infer<typeof matchTextStyleResultSchema>;
4093
- export declare const mediaAnalysisResultSchema: z.ZodDiscriminatedUnion<"operation", [z.ZodObject<{
4427
+ export declare const mediaAnalysisResultSchema: z.ZodEffects<z.ZodDiscriminatedUnion<"operation", [z.ZodObject<{
4094
4428
  version: z.ZodLiteral<1>;
4095
4429
  operation: z.ZodLiteral<"extract_frames">;
4096
4430
  source: z.ZodObject<{
@@ -6751,7 +7085,7 @@ export declare const mediaAnalysisResultSchema: z.ZodDiscriminatedUnion<"operati
6751
7085
  } | null;
6752
7086
  }[];
6753
7087
  }>, z.ZodObject<{
6754
- version: z.ZodLiteral<1>;
7088
+ version: z.ZodUnion<[z.ZodLiteral<1>, z.ZodLiteral<2>]>;
6755
7089
  operation: z.ZodLiteral<"match_text_style">;
6756
7090
  source: z.ZodObject<{
6757
7091
  encodedWidth: z.ZodNumber;
@@ -6803,12 +7137,12 @@ export declare const mediaAnalysisResultSchema: z.ZodDiscriminatedUnion<"operati
6803
7137
  x: number;
6804
7138
  y: number;
6805
7139
  }>;
6806
- surface: z.ZodLiteral<"image-editor-element">;
7140
+ surface: z.ZodEnum<["image-editor-element", "native-text-sticker"]>;
6807
7141
  status: z.ZodEnum<["fitted", "unavailable"]>;
6808
7142
  reason: z.ZodNullable<z.ZodString>;
6809
7143
  text: z.ZodNullable<z.ZodString>;
6810
7144
  textSource: z.ZodEnum<["supplied", "ocr"]>;
6811
- renderer: z.ZodObject<{
7145
+ renderer: z.ZodUnion<[z.ZodObject<{
6812
7146
  name: z.ZodLiteral<"UGC-ImageEditorComposition">;
6813
7147
  ugcVersion: z.ZodString;
6814
7148
  fonts: z.ZodArray<z.ZodString, "many">;
@@ -6826,7 +7160,22 @@ export declare const mediaAnalysisResultSchema: z.ZodDiscriminatedUnion<"operati
6826
7160
  fonts: string[];
6827
7161
  fontHashes: Record<string, string>;
6828
7162
  maxRenders: number;
6829
- }>;
7163
+ }>, z.ZodObject<{
7164
+ name: z.ZodLiteral<"UGC-NativeTikTok">;
7165
+ profile: z.ZodLiteral<"tiktok-classic-ios-47">;
7166
+ fontHashes: z.ZodRecord<z.ZodString, z.ZodString>;
7167
+ maxRenders: z.ZodNumber;
7168
+ }, "strip", z.ZodTypeAny, {
7169
+ profile: "tiktok-classic-ios-47";
7170
+ name: "UGC-NativeTikTok";
7171
+ fontHashes: Record<string, string>;
7172
+ maxRenders: number;
7173
+ }, {
7174
+ profile: "tiktok-classic-ios-47";
7175
+ name: "UGC-NativeTikTok";
7176
+ fontHashes: Record<string, string>;
7177
+ maxRenders: number;
7178
+ }>]>;
6830
7179
  candidates: z.ZodArray<z.ZodObject<{
6831
7180
  element: z.ZodObject<{
6832
7181
  id: z.ZodString;
@@ -7189,6 +7538,200 @@ export declare const mediaAnalysisResultSchema: z.ZodDiscriminatedUnion<"operati
7189
7538
  fontIdentity: "unverified";
7190
7539
  quality: "close" | "approximate";
7191
7540
  }>, "many">;
7541
+ nativeResult: z.ZodOptional<z.ZodObject<{
7542
+ profile: z.ZodLiteral<"tiktok-classic-ios-47">;
7543
+ settings: z.ZodObject<{
7544
+ profile: z.ZodDefault<z.ZodLiteral<"tiktok-classic-ios-47">>;
7545
+ text: z.ZodEffects<z.ZodString, string, string>;
7546
+ fontSizePt: z.ZodDefault<z.ZodNumber>;
7547
+ canvasWidthPt: z.ZodDefault<z.ZodNumber>;
7548
+ canvasHeightPt: z.ZodDefault<z.ZodNumber>;
7549
+ containerWidthPt: z.ZodDefault<z.ZodNumber>;
7550
+ containerHeightPt: z.ZodOptional<z.ZodNumber>;
7551
+ originPt: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
7552
+ viewFontSizePt: z.ZodOptional<z.ZodNumber>;
7553
+ }, "strict", z.ZodTypeAny, {
7554
+ text: string;
7555
+ profile: "tiktok-classic-ios-47";
7556
+ fontSizePt: number;
7557
+ canvasWidthPt: number;
7558
+ canvasHeightPt: number;
7559
+ containerWidthPt: number;
7560
+ originPt: [number, number];
7561
+ containerHeightPt?: number | undefined;
7562
+ viewFontSizePt?: number | undefined;
7563
+ }, {
7564
+ text: string;
7565
+ profile?: "tiktok-classic-ios-47" | undefined;
7566
+ fontSizePt?: number | undefined;
7567
+ canvasWidthPt?: number | undefined;
7568
+ canvasHeightPt?: number | undefined;
7569
+ containerWidthPt?: number | undefined;
7570
+ containerHeightPt?: number | undefined;
7571
+ originPt?: [number, number] | undefined;
7572
+ viewFontSizePt?: number | undefined;
7573
+ }>;
7574
+ stickerUrl: z.ZodEffects<z.ZodString, string, string>;
7575
+ composition: z.ZodObject<{
7576
+ x: z.ZodNumber;
7577
+ y: z.ZodNumber;
7578
+ width: z.ZodNumber;
7579
+ height: z.ZodNumber;
7580
+ scale: z.ZodNumber;
7581
+ }, "strip", z.ZodTypeAny, {
7582
+ width: number;
7583
+ height: number;
7584
+ x: number;
7585
+ y: number;
7586
+ scale: number;
7587
+ }, {
7588
+ width: number;
7589
+ height: number;
7590
+ x: number;
7591
+ y: number;
7592
+ scale: number;
7593
+ }>;
7594
+ maskIoU: z.ZodNumber;
7595
+ foregroundMae: z.ZodNumber;
7596
+ fontIdentity: z.ZodLiteral<"unverified">;
7597
+ quality: z.ZodEnum<["close", "approximate"]>;
7598
+ diagnostics: z.ZodObject<{
7599
+ method: z.ZodLiteral<"local-white-fill-dark-outline">;
7600
+ textPixelCount: z.ZodNumber;
7601
+ outlinePixelCount: z.ZodNumber;
7602
+ backgroundExcluded: z.ZodLiteral<true>;
7603
+ observedLineCount: z.ZodNumber;
7604
+ expectedLineCount: z.ZodNumber;
7605
+ renderCount: z.ZodNumber;
7606
+ clipped: z.ZodBoolean;
7607
+ comparison: z.ZodLiteral<"segmented-text-and-outline">;
7608
+ resampling: z.ZodEnum<["none", "lanczos3"]>;
7609
+ maskMetric: z.ZodLiteral<"white-fill-iou">;
7610
+ outlineIoU: z.ZodNumber;
7611
+ emojiPixelCount: z.ZodNumber;
7612
+ residualMetric: z.ZodLiteral<"segmented-text-outline-and-warm-emoji">;
7613
+ foregroundMetric: z.ZodLiteral<"estimated-background-composite-MAE">;
7614
+ }, "strip", z.ZodTypeAny, {
7615
+ method: "local-white-fill-dark-outline";
7616
+ textPixelCount: number;
7617
+ outlinePixelCount: number;
7618
+ backgroundExcluded: true;
7619
+ observedLineCount: number;
7620
+ expectedLineCount: number;
7621
+ renderCount: number;
7622
+ clipped: boolean;
7623
+ comparison: "segmented-text-and-outline";
7624
+ resampling: "none" | "lanczos3";
7625
+ maskMetric: "white-fill-iou";
7626
+ outlineIoU: number;
7627
+ emojiPixelCount: number;
7628
+ residualMetric: "segmented-text-outline-and-warm-emoji";
7629
+ foregroundMetric: "estimated-background-composite-MAE";
7630
+ }, {
7631
+ method: "local-white-fill-dark-outline";
7632
+ textPixelCount: number;
7633
+ outlinePixelCount: number;
7634
+ backgroundExcluded: true;
7635
+ observedLineCount: number;
7636
+ expectedLineCount: number;
7637
+ renderCount: number;
7638
+ clipped: boolean;
7639
+ comparison: "segmented-text-and-outline";
7640
+ resampling: "none" | "lanczos3";
7641
+ maskMetric: "white-fill-iou";
7642
+ outlineIoU: number;
7643
+ emojiPixelCount: number;
7644
+ residualMetric: "segmented-text-outline-and-warm-emoji";
7645
+ foregroundMetric: "estimated-background-composite-MAE";
7646
+ }>;
7647
+ }, "strip", z.ZodTypeAny, {
7648
+ profile: "tiktok-classic-ios-47";
7649
+ settings: {
7650
+ text: string;
7651
+ profile: "tiktok-classic-ios-47";
7652
+ fontSizePt: number;
7653
+ canvasWidthPt: number;
7654
+ canvasHeightPt: number;
7655
+ containerWidthPt: number;
7656
+ originPt: [number, number];
7657
+ containerHeightPt?: number | undefined;
7658
+ viewFontSizePt?: number | undefined;
7659
+ };
7660
+ maskIoU: number;
7661
+ foregroundMae: number;
7662
+ fontIdentity: "unverified";
7663
+ quality: "close" | "approximate";
7664
+ stickerUrl: string;
7665
+ composition: {
7666
+ width: number;
7667
+ height: number;
7668
+ x: number;
7669
+ y: number;
7670
+ scale: number;
7671
+ };
7672
+ diagnostics: {
7673
+ method: "local-white-fill-dark-outline";
7674
+ textPixelCount: number;
7675
+ outlinePixelCount: number;
7676
+ backgroundExcluded: true;
7677
+ observedLineCount: number;
7678
+ expectedLineCount: number;
7679
+ renderCount: number;
7680
+ clipped: boolean;
7681
+ comparison: "segmented-text-and-outline";
7682
+ resampling: "none" | "lanczos3";
7683
+ maskMetric: "white-fill-iou";
7684
+ outlineIoU: number;
7685
+ emojiPixelCount: number;
7686
+ residualMetric: "segmented-text-outline-and-warm-emoji";
7687
+ foregroundMetric: "estimated-background-composite-MAE";
7688
+ };
7689
+ }, {
7690
+ profile: "tiktok-classic-ios-47";
7691
+ settings: {
7692
+ text: string;
7693
+ profile?: "tiktok-classic-ios-47" | undefined;
7694
+ fontSizePt?: number | undefined;
7695
+ canvasWidthPt?: number | undefined;
7696
+ canvasHeightPt?: number | undefined;
7697
+ containerWidthPt?: number | undefined;
7698
+ containerHeightPt?: number | undefined;
7699
+ originPt?: [number, number] | undefined;
7700
+ viewFontSizePt?: number | undefined;
7701
+ };
7702
+ maskIoU: number;
7703
+ foregroundMae: number;
7704
+ fontIdentity: "unverified";
7705
+ quality: "close" | "approximate";
7706
+ stickerUrl: string;
7707
+ composition: {
7708
+ width: number;
7709
+ height: number;
7710
+ x: number;
7711
+ y: number;
7712
+ scale: number;
7713
+ };
7714
+ diagnostics: {
7715
+ method: "local-white-fill-dark-outline";
7716
+ textPixelCount: number;
7717
+ outlinePixelCount: number;
7718
+ backgroundExcluded: true;
7719
+ observedLineCount: number;
7720
+ expectedLineCount: number;
7721
+ renderCount: number;
7722
+ clipped: boolean;
7723
+ comparison: "segmented-text-and-outline";
7724
+ resampling: "none" | "lanczos3";
7725
+ maskMetric: "white-fill-iou";
7726
+ outlineIoU: number;
7727
+ emojiPixelCount: number;
7728
+ residualMetric: "segmented-text-outline-and-warm-emoji";
7729
+ foregroundMetric: "estimated-background-composite-MAE";
7730
+ };
7731
+ }>>;
7732
+ reasonCode: z.ZodOptional<z.ZodNullable<z.ZodString>>;
7733
+ nextActions: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
7734
+ fitAttempted: z.ZodOptional<z.ZodBoolean>;
7192
7735
  renders: z.ZodNumber;
7193
7736
  backgroundColor: z.ZodString;
7194
7737
  warnings: z.ZodArray<z.ZodString, "many">;
@@ -7197,7 +7740,7 @@ export declare const mediaAnalysisResultSchema: z.ZodDiscriminatedUnion<"operati
7197
7740
  }, "strip", z.ZodTypeAny, {
7198
7741
  status: "unavailable" | "fitted";
7199
7742
  text: string | null;
7200
- version: 1;
7743
+ version: 1 | 2;
7201
7744
  operation: "match_text_style";
7202
7745
  source: {
7203
7746
  encodedWidth: number;
@@ -7220,7 +7763,7 @@ export declare const mediaAnalysisResultSchema: z.ZodDiscriminatedUnion<"operati
7220
7763
  manifestUrl: string;
7221
7764
  warnings: string[];
7222
7765
  previewUrl: string;
7223
- surface: "image-editor-element";
7766
+ surface: "image-editor-element" | "native-text-sticker";
7224
7767
  reason: string | null;
7225
7768
  textSource: "supplied" | "ocr";
7226
7769
  renderer: {
@@ -7229,6 +7772,11 @@ export declare const mediaAnalysisResultSchema: z.ZodDiscriminatedUnion<"operati
7229
7772
  fonts: string[];
7230
7773
  fontHashes: Record<string, string>;
7231
7774
  maxRenders: number;
7775
+ } | {
7776
+ profile: "tiktok-classic-ios-47";
7777
+ name: "UGC-NativeTikTok";
7778
+ fontHashes: Record<string, string>;
7779
+ maxRenders: number;
7232
7780
  };
7233
7781
  backgroundColor: string;
7234
7782
  candidates: {
@@ -7298,10 +7846,56 @@ export declare const mediaAnalysisResultSchema: z.ZodDiscriminatedUnion<"operati
7298
7846
  quality: "close" | "approximate";
7299
7847
  }[];
7300
7848
  renders: number;
7849
+ nativeResult?: {
7850
+ profile: "tiktok-classic-ios-47";
7851
+ settings: {
7852
+ text: string;
7853
+ profile: "tiktok-classic-ios-47";
7854
+ fontSizePt: number;
7855
+ canvasWidthPt: number;
7856
+ canvasHeightPt: number;
7857
+ containerWidthPt: number;
7858
+ originPt: [number, number];
7859
+ containerHeightPt?: number | undefined;
7860
+ viewFontSizePt?: number | undefined;
7861
+ };
7862
+ maskIoU: number;
7863
+ foregroundMae: number;
7864
+ fontIdentity: "unverified";
7865
+ quality: "close" | "approximate";
7866
+ stickerUrl: string;
7867
+ composition: {
7868
+ width: number;
7869
+ height: number;
7870
+ x: number;
7871
+ y: number;
7872
+ scale: number;
7873
+ };
7874
+ diagnostics: {
7875
+ method: "local-white-fill-dark-outline";
7876
+ textPixelCount: number;
7877
+ outlinePixelCount: number;
7878
+ backgroundExcluded: true;
7879
+ observedLineCount: number;
7880
+ expectedLineCount: number;
7881
+ renderCount: number;
7882
+ clipped: boolean;
7883
+ comparison: "segmented-text-and-outline";
7884
+ resampling: "none" | "lanczos3";
7885
+ maskMetric: "white-fill-iou";
7886
+ outlineIoU: number;
7887
+ emojiPixelCount: number;
7888
+ residualMetric: "segmented-text-outline-and-warm-emoji";
7889
+ foregroundMetric: "estimated-background-composite-MAE";
7890
+ };
7891
+ } | undefined;
7892
+ reasonCode?: string | null | undefined;
7893
+ nextActions?: string[] | undefined;
7894
+ fitAttempted?: boolean | undefined;
7301
7895
  }, {
7302
7896
  status: "unavailable" | "fitted";
7303
7897
  text: string | null;
7304
- version: 1;
7898
+ version: 1 | 2;
7305
7899
  operation: "match_text_style";
7306
7900
  source: {
7307
7901
  encodedWidth: number;
@@ -7324,7 +7918,7 @@ export declare const mediaAnalysisResultSchema: z.ZodDiscriminatedUnion<"operati
7324
7918
  manifestUrl: string;
7325
7919
  warnings: string[];
7326
7920
  previewUrl: string;
7327
- surface: "image-editor-element";
7921
+ surface: "image-editor-element" | "native-text-sticker";
7328
7922
  reason: string | null;
7329
7923
  textSource: "supplied" | "ocr";
7330
7924
  renderer: {
@@ -7333,6 +7927,11 @@ export declare const mediaAnalysisResultSchema: z.ZodDiscriminatedUnion<"operati
7333
7927
  fonts: string[];
7334
7928
  fontHashes: Record<string, string>;
7335
7929
  maxRenders: number;
7930
+ } | {
7931
+ profile: "tiktok-classic-ios-47";
7932
+ name: "UGC-NativeTikTok";
7933
+ fontHashes: Record<string, string>;
7934
+ maxRenders: number;
7336
7935
  };
7337
7936
  backgroundColor: string;
7338
7937
  candidates: {
@@ -7402,4 +8001,1370 @@ export declare const mediaAnalysisResultSchema: z.ZodDiscriminatedUnion<"operati
7402
8001
  quality: "close" | "approximate";
7403
8002
  }[];
7404
8003
  renders: number;
7405
- }>]>;
8004
+ nativeResult?: {
8005
+ profile: "tiktok-classic-ios-47";
8006
+ settings: {
8007
+ text: string;
8008
+ profile?: "tiktok-classic-ios-47" | undefined;
8009
+ fontSizePt?: number | undefined;
8010
+ canvasWidthPt?: number | undefined;
8011
+ canvasHeightPt?: number | undefined;
8012
+ containerWidthPt?: number | undefined;
8013
+ containerHeightPt?: number | undefined;
8014
+ originPt?: [number, number] | undefined;
8015
+ viewFontSizePt?: number | undefined;
8016
+ };
8017
+ maskIoU: number;
8018
+ foregroundMae: number;
8019
+ fontIdentity: "unverified";
8020
+ quality: "close" | "approximate";
8021
+ stickerUrl: string;
8022
+ composition: {
8023
+ width: number;
8024
+ height: number;
8025
+ x: number;
8026
+ y: number;
8027
+ scale: number;
8028
+ };
8029
+ diagnostics: {
8030
+ method: "local-white-fill-dark-outline";
8031
+ textPixelCount: number;
8032
+ outlinePixelCount: number;
8033
+ backgroundExcluded: true;
8034
+ observedLineCount: number;
8035
+ expectedLineCount: number;
8036
+ renderCount: number;
8037
+ clipped: boolean;
8038
+ comparison: "segmented-text-and-outline";
8039
+ resampling: "none" | "lanczos3";
8040
+ maskMetric: "white-fill-iou";
8041
+ outlineIoU: number;
8042
+ emojiPixelCount: number;
8043
+ residualMetric: "segmented-text-outline-and-warm-emoji";
8044
+ foregroundMetric: "estimated-background-composite-MAE";
8045
+ };
8046
+ } | undefined;
8047
+ reasonCode?: string | null | undefined;
8048
+ nextActions?: string[] | undefined;
8049
+ fitAttempted?: boolean | undefined;
8050
+ }>]>, {
8051
+ selection: "nearest" | "before" | "after";
8052
+ contactSheet: {
8053
+ url: string;
8054
+ width: number;
8055
+ height: number;
8056
+ cells: {
8057
+ frameIndex: number;
8058
+ box: {
8059
+ width: number;
8060
+ height: number;
8061
+ x: number;
8062
+ y: number;
8063
+ };
8064
+ frameUrl: string;
8065
+ }[];
8066
+ } | null;
8067
+ version: 1;
8068
+ operation: "extract_frames";
8069
+ source: {
8070
+ durationMs: number;
8071
+ encodedWidth: number;
8072
+ encodedHeight: number;
8073
+ displayWidth: number;
8074
+ displayHeight: number;
8075
+ rotationDegrees: number;
8076
+ sampleAspectRatio: string;
8077
+ timeBase: string;
8078
+ startPts: string;
8079
+ startTimeMs: number;
8080
+ frameCount: number;
8081
+ variableFrameRate: boolean;
8082
+ sha256: string;
8083
+ bytes: number;
8084
+ };
8085
+ frames: {
8086
+ url: string;
8087
+ index: number;
8088
+ requestedTimeMs: number;
8089
+ timeMs: number;
8090
+ sourcePts: string;
8091
+ frameIndex: number;
8092
+ width: number;
8093
+ height: number;
8094
+ }[];
8095
+ manifestUrl: string;
8096
+ } | {
8097
+ version: 1;
8098
+ operation: "detect_scenes";
8099
+ source: {
8100
+ durationMs: number;
8101
+ encodedWidth: number;
8102
+ encodedHeight: number;
8103
+ displayWidth: number;
8104
+ displayHeight: number;
8105
+ rotationDegrees: number;
8106
+ sampleAspectRatio: string;
8107
+ timeBase: string;
8108
+ startPts: string;
8109
+ startTimeMs: number;
8110
+ frameCount: number;
8111
+ variableFrameRate: boolean;
8112
+ sha256: string;
8113
+ bytes: number;
8114
+ };
8115
+ manifestUrl: string;
8116
+ scenes: {
8117
+ startMs: number;
8118
+ endMs: number;
8119
+ startPts: string;
8120
+ index: number;
8121
+ startFrameIndex: number;
8122
+ endFrameIndexExclusive: number;
8123
+ endPts: string | null;
8124
+ }[];
8125
+ detector: {
8126
+ name: string;
8127
+ version: string;
8128
+ settings: Record<string, number>;
8129
+ };
8130
+ warnings: string[];
8131
+ } | {
8132
+ version: 1;
8133
+ operation: "read_image_text";
8134
+ source: {
8135
+ encodedWidth: number;
8136
+ encodedHeight: number;
8137
+ displayWidth: number;
8138
+ displayHeight: number;
8139
+ sha256: string;
8140
+ bytes: number;
8141
+ exifOrientation: number;
8142
+ alphaBackground: "white";
8143
+ };
8144
+ manifestUrl: string;
8145
+ warnings: string[];
8146
+ model: {
8147
+ name: string;
8148
+ runtime: string;
8149
+ device: "cpu";
8150
+ modelHashes: Record<string, string>;
8151
+ orientationClassifier: string;
8152
+ recognitionThreshold: number;
8153
+ coordinates: "display-oriented-source-pixels";
8154
+ };
8155
+ previewUrl: string;
8156
+ regions: {
8157
+ status: "readable" | "unreadable";
8158
+ id: string;
8159
+ text: string | null;
8160
+ box: {
8161
+ width: number;
8162
+ height: number;
8163
+ x: number;
8164
+ y: number;
8165
+ };
8166
+ polygon: {
8167
+ x: number;
8168
+ y: number;
8169
+ }[];
8170
+ rawText: string;
8171
+ confidence: number;
8172
+ }[];
8173
+ lines: {
8174
+ status: "readable" | "unreadable";
8175
+ id: string;
8176
+ text: string | null;
8177
+ box: {
8178
+ width: number;
8179
+ height: number;
8180
+ x: number;
8181
+ y: number;
8182
+ };
8183
+ rawText: string;
8184
+ confidence: number;
8185
+ readingOrder: number;
8186
+ regionIds: string[];
8187
+ }[];
8188
+ } | {
8189
+ version: 1;
8190
+ operation: "read_video_text";
8191
+ source: {
8192
+ durationMs: number;
8193
+ encodedWidth: number;
8194
+ encodedHeight: number;
8195
+ displayWidth: number;
8196
+ displayHeight: number;
8197
+ rotationDegrees: number;
8198
+ sampleAspectRatio: string;
8199
+ timeBase: string;
8200
+ startPts: string;
8201
+ startTimeMs: number;
8202
+ frameCount: number;
8203
+ variableFrameRate: boolean;
8204
+ sha256: string;
8205
+ bytes: number;
8206
+ };
8207
+ frames: {
8208
+ endMs: number;
8209
+ timeMs: number;
8210
+ sourcePts: string;
8211
+ frameIndex: number;
8212
+ regions: {
8213
+ status: "readable" | "unreadable";
8214
+ id: string;
8215
+ text: string | null;
8216
+ box: {
8217
+ width: number;
8218
+ height: number;
8219
+ x: number;
8220
+ y: number;
8221
+ };
8222
+ polygon: {
8223
+ x: number;
8224
+ y: number;
8225
+ }[];
8226
+ rawText: string;
8227
+ confidence: number;
8228
+ }[];
8229
+ lines: {
8230
+ status: "readable" | "unreadable";
8231
+ id: string;
8232
+ text: string | null;
8233
+ box: {
8234
+ width: number;
8235
+ height: number;
8236
+ x: number;
8237
+ y: number;
8238
+ };
8239
+ rawText: string;
8240
+ confidence: number;
8241
+ readingOrder: number;
8242
+ regionIds: string[];
8243
+ }[];
8244
+ sceneChange: boolean;
8245
+ previewUrl?: string | undefined;
8246
+ }[];
8247
+ manifestUrl: string;
8248
+ warnings: string[];
8249
+ model: {
8250
+ name: string;
8251
+ runtime: string;
8252
+ device: "cpu";
8253
+ modelHashes: Record<string, string>;
8254
+ orientationClassifier: string;
8255
+ recognitionThreshold: number;
8256
+ coordinates: "display-oriented-source-pixels";
8257
+ };
8258
+ tracks: {
8259
+ id: string;
8260
+ text: string | null;
8261
+ rawText: string;
8262
+ firstObservedMs: number;
8263
+ lastObservedEndMs: number;
8264
+ observations: {
8265
+ endMs: number;
8266
+ timeMs: number;
8267
+ sourcePts: string;
8268
+ frameIndex: number;
8269
+ box: {
8270
+ width: number;
8271
+ height: number;
8272
+ x: number;
8273
+ y: number;
8274
+ };
8275
+ confidence: number;
8276
+ sampleIndex: number;
8277
+ lineId: string;
8278
+ }[];
8279
+ }[];
8280
+ coverage: {
8281
+ complete: boolean;
8282
+ range: {
8283
+ startMs: number;
8284
+ endMs: number;
8285
+ };
8286
+ mode: "fast" | "frame_scan";
8287
+ uninspected: {
8288
+ startMs: number;
8289
+ endMs: number;
8290
+ }[];
8291
+ inspected: {
8292
+ startMs: number;
8293
+ endMs: number;
8294
+ sourcePts: string;
8295
+ frameIndex: number;
8296
+ }[];
8297
+ };
8298
+ } | {
8299
+ status: "no_audio" | "no_speech_detected" | "transcribed";
8300
+ text: string;
8301
+ version: 1;
8302
+ operation: "transcribe_audio";
8303
+ source: {
8304
+ durationMs: number;
8305
+ sha256: string;
8306
+ bytes: number;
8307
+ hasAudio: boolean;
8308
+ originStartMs: number;
8309
+ audioStartPts: string | null;
8310
+ audioTimeBase: string | null;
8311
+ sampleRate: number | null;
8312
+ channels: number | null;
8313
+ channelLayout: string | null;
8314
+ audioOffsetMs: number | null;
8315
+ };
8316
+ manifestUrl: string;
8317
+ warnings: string[];
8318
+ model: {
8319
+ name: string;
8320
+ sha256: Record<string, string>;
8321
+ runtime: string;
8322
+ device: "cpu";
8323
+ repository: string;
8324
+ revision: string;
8325
+ computeType: "int8";
8326
+ vad: string;
8327
+ beamSize: number;
8328
+ temperature: number;
8329
+ conditionOnPreviousText: boolean;
8330
+ };
8331
+ coverage: {
8332
+ requestedRange: {
8333
+ startMs: number;
8334
+ endMs: number;
8335
+ };
8336
+ analyzed: {
8337
+ startMs: number;
8338
+ endMs: number;
8339
+ }[];
8340
+ withoutAudio: {
8341
+ startMs: number;
8342
+ endMs: number;
8343
+ }[];
8344
+ sampleRoundingToleranceMs: number;
8345
+ };
8346
+ segments: {
8347
+ text: string;
8348
+ timing: "estimated";
8349
+ startMs: number;
8350
+ endMs: number;
8351
+ index: number;
8352
+ avgLogProbability: number;
8353
+ noSpeechProbability: number;
8354
+ words: {
8355
+ text: string;
8356
+ timing: "estimated";
8357
+ startMs: number;
8358
+ endMs: number;
8359
+ probability: number;
8360
+ }[];
8361
+ }[];
8362
+ language: string | null;
8363
+ languageProbability: number | null;
8364
+ segmentTiming: "estimated" | "unavailable";
8365
+ wordTiming: "estimated" | "unavailable";
8366
+ speakerLabels: "unavailable";
8367
+ channelPolicy: string;
8368
+ audioPreviewUrl?: string | undefined;
8369
+ } | {
8370
+ status: "no_audio" | "measured";
8371
+ version: 1;
8372
+ operation: "measure_audio_levels";
8373
+ source: {
8374
+ durationMs: number;
8375
+ sha256: string;
8376
+ bytes: number;
8377
+ hasAudio: boolean;
8378
+ originStartMs: number;
8379
+ audioStartPts: string | null;
8380
+ audioTimeBase: string | null;
8381
+ sampleRate: number | null;
8382
+ channels: number | null;
8383
+ channelLayout: string | null;
8384
+ audioOffsetMs: number | null;
8385
+ };
8386
+ manifestUrl: string;
8387
+ settings: {
8388
+ channelPolicy: "native-separate";
8389
+ windowMs: number;
8390
+ silenceThresholdDbfs: number;
8391
+ silenceMethod: "all-channel-window-rms";
8392
+ potentialClippingThreshold: number;
8393
+ loudnessMethod: "FFmpeg-ebur128-native-channels";
8394
+ ffmpegVersion: string;
8395
+ };
8396
+ warnings: string[];
8397
+ coverage: {
8398
+ requestedRange: {
8399
+ startMs: number;
8400
+ endMs: number;
8401
+ };
8402
+ analyzed: {
8403
+ startMs: number;
8404
+ endMs: number;
8405
+ }[];
8406
+ withoutAudio: {
8407
+ startMs: number;
8408
+ endMs: number;
8409
+ }[];
8410
+ sampleRoundingToleranceMs: number;
8411
+ };
8412
+ channels: {
8413
+ index: number;
8414
+ rmsDbfs: number | null;
8415
+ samplePeakDbfs: number | null;
8416
+ potentialClippedSamples: number;
8417
+ truePeakDbtp: number | null;
8418
+ sampleCount: number;
8419
+ intersampleOvershoot: boolean;
8420
+ }[];
8421
+ truePeakDbtp: number | null;
8422
+ windows: {
8423
+ startMs: number;
8424
+ endMs: number;
8425
+ channels: {
8426
+ index: number;
8427
+ rmsDbfs: number | null;
8428
+ samplePeakDbfs: number | null;
8429
+ potentialClippedSamples: number;
8430
+ }[];
8431
+ }[];
8432
+ silence: {
8433
+ startMs: number;
8434
+ endMs: number;
8435
+ }[];
8436
+ integratedLufs: number | null;
8437
+ loudnessTimeline: {
8438
+ startMs: number;
8439
+ endMs: number;
8440
+ momentaryLufs: number | null;
8441
+ shortTermLufs: number | null;
8442
+ }[];
8443
+ previewUrl?: string | undefined;
8444
+ } | {
8445
+ version: 1;
8446
+ operation: "sample_colors";
8447
+ source: {
8448
+ encodedWidth: number;
8449
+ encodedHeight: number;
8450
+ displayWidth: number;
8451
+ displayHeight: number;
8452
+ sha256: string;
8453
+ bytes: number;
8454
+ exifOrientation: number;
8455
+ colorSpace: "sRGB";
8456
+ colorPolicy: "embedded-ICC-to-sRGB-relative-colorimetric" | "untagged-assumed-sRGB";
8457
+ alphaPolicy: "straight-alpha-no-background-composite";
8458
+ };
8459
+ manifestUrl: string;
8460
+ warnings: string[];
8461
+ previewUrl: string;
8462
+ point: {
8463
+ x: number;
8464
+ y: number;
8465
+ rgba: number[];
8466
+ } | null;
8467
+ selectionBox: {
8468
+ width: number;
8469
+ height: number;
8470
+ x: number;
8471
+ y: number;
8472
+ } | null;
8473
+ selectedPixelCount: number;
8474
+ visiblePixelCount: number;
8475
+ alphaWeight: number;
8476
+ palette: {
8477
+ rgb: number[];
8478
+ hex: string;
8479
+ proportion: number;
8480
+ }[];
8481
+ otherProportion: number;
8482
+ method: "exact-observed-colors" | "5-bit-sRGB-bins-alpha-weighted-mean";
8483
+ } | {
8484
+ version: 1;
8485
+ operation: "measure_layout";
8486
+ source: {
8487
+ encodedWidth: number;
8488
+ encodedHeight: number;
8489
+ displayWidth: number;
8490
+ displayHeight: number;
8491
+ sha256: string;
8492
+ bytes: number;
8493
+ exifOrientation: number;
8494
+ colorSpace: "sRGB";
8495
+ colorPolicy: "embedded-ICC-to-sRGB-relative-colorimetric" | "untagged-assumed-sRGB";
8496
+ alphaPolicy: "straight-alpha-no-background-composite";
8497
+ };
8498
+ manifestUrl: string;
8499
+ warnings: string[];
8500
+ coordinates: "display-oriented-source-pixels";
8501
+ previewUrl: string;
8502
+ elements: {
8503
+ id: string;
8504
+ box: {
8505
+ width: number;
8506
+ height: number;
8507
+ x: number;
8508
+ y: number;
8509
+ } | null;
8510
+ geometry: "box" | "mask";
8511
+ normalizedBox: {
8512
+ width: number;
8513
+ height: number;
8514
+ x: number;
8515
+ y: number;
8516
+ } | null;
8517
+ boxArea: number;
8518
+ visibleArea: number | null;
8519
+ visibleFractionOfCanvas: number | null;
8520
+ boxCenter: {
8521
+ x: number;
8522
+ y: number;
8523
+ } | null;
8524
+ visibleCentroid: {
8525
+ x: number;
8526
+ y: number;
8527
+ } | null;
8528
+ margins: {
8529
+ left: number;
8530
+ top: number;
8531
+ right: number;
8532
+ bottom: number;
8533
+ } | null;
8534
+ }[];
8535
+ pairs: {
8536
+ a: string;
8537
+ b: string;
8538
+ boxIntersectionArea: number;
8539
+ boxIoU: number | null;
8540
+ visibleIntersectionArea: number | null;
8541
+ visibleIoU: number | null;
8542
+ axisGaps: {
8543
+ x: number;
8544
+ y: number;
8545
+ } | null;
8546
+ alignmentDeltas: {
8547
+ left: number;
8548
+ top: number;
8549
+ right: number;
8550
+ bottom: number;
8551
+ centerX: number;
8552
+ centerY: number;
8553
+ } | null;
8554
+ }[];
8555
+ } | {
8556
+ status: "unavailable" | "fitted";
8557
+ text: string | null;
8558
+ version: 1 | 2;
8559
+ operation: "match_text_style";
8560
+ source: {
8561
+ encodedWidth: number;
8562
+ encodedHeight: number;
8563
+ displayWidth: number;
8564
+ displayHeight: number;
8565
+ sha256: string;
8566
+ bytes: number;
8567
+ exifOrientation: number;
8568
+ colorSpace: "sRGB";
8569
+ colorPolicy: "embedded-ICC-to-sRGB-relative-colorimetric" | "untagged-assumed-sRGB";
8570
+ alphaPolicy: "straight-alpha-no-background-composite";
8571
+ };
8572
+ box: {
8573
+ width: number;
8574
+ height: number;
8575
+ x: number;
8576
+ y: number;
8577
+ };
8578
+ manifestUrl: string;
8579
+ warnings: string[];
8580
+ previewUrl: string;
8581
+ surface: "image-editor-element" | "native-text-sticker";
8582
+ reason: string | null;
8583
+ textSource: "supplied" | "ocr";
8584
+ renderer: {
8585
+ name: "UGC-ImageEditorComposition";
8586
+ ugcVersion: string;
8587
+ fonts: string[];
8588
+ fontHashes: Record<string, string>;
8589
+ maxRenders: number;
8590
+ } | {
8591
+ profile: "tiktok-classic-ios-47";
8592
+ name: "UGC-NativeTikTok";
8593
+ fontHashes: Record<string, string>;
8594
+ maxRenders: number;
8595
+ };
8596
+ backgroundColor: string;
8597
+ candidates: {
8598
+ element: {
8599
+ type: "text";
8600
+ id: string;
8601
+ text: string;
8602
+ width: number;
8603
+ height: number;
8604
+ x: number;
8605
+ y: number;
8606
+ zIndex: number;
8607
+ textIsVariable: false;
8608
+ font: "tiktok" | "arial" | "apple";
8609
+ fontSize: number;
8610
+ fontWeight: 700 | 400 | 500 | 600 | 800 | 900;
8611
+ color: string;
8612
+ strokeColor: string;
8613
+ outlineWidth: number;
8614
+ lineHeight: number;
8615
+ letterSpacing: number;
8616
+ textAlign: "left" | "right" | "center";
8617
+ verticalAlign: "top";
8618
+ autoWidth: false;
8619
+ paddingTop: number;
8620
+ paddingRight: number;
8621
+ paddingBottom: number;
8622
+ paddingLeft: number;
8623
+ };
8624
+ previewConfig: {
8625
+ width: number;
8626
+ height: number;
8627
+ elements: {
8628
+ type: "text";
8629
+ id: string;
8630
+ text: string;
8631
+ width: number;
8632
+ height: number;
8633
+ x: number;
8634
+ y: number;
8635
+ zIndex: number;
8636
+ textIsVariable: false;
8637
+ font: "tiktok" | "arial" | "apple";
8638
+ fontSize: number;
8639
+ fontWeight: 700 | 400 | 500 | 600 | 800 | 900;
8640
+ color: string;
8641
+ strokeColor: string;
8642
+ outlineWidth: number;
8643
+ lineHeight: number;
8644
+ letterSpacing: number;
8645
+ textAlign: "left" | "right" | "center";
8646
+ verticalAlign: "top";
8647
+ autoWidth: false;
8648
+ paddingTop: number;
8649
+ paddingRight: number;
8650
+ paddingBottom: number;
8651
+ paddingLeft: number;
8652
+ }[];
8653
+ aspectRatio: string;
8654
+ dimensionPreset: "custom";
8655
+ backgroundType: "color";
8656
+ backgroundColor: string;
8657
+ };
8658
+ maskIoU: number;
8659
+ foregroundMae: number;
8660
+ fontIdentity: "unverified";
8661
+ quality: "close" | "approximate";
8662
+ }[];
8663
+ renders: number;
8664
+ nativeResult?: {
8665
+ profile: "tiktok-classic-ios-47";
8666
+ settings: {
8667
+ text: string;
8668
+ profile: "tiktok-classic-ios-47";
8669
+ fontSizePt: number;
8670
+ canvasWidthPt: number;
8671
+ canvasHeightPt: number;
8672
+ containerWidthPt: number;
8673
+ originPt: [number, number];
8674
+ containerHeightPt?: number | undefined;
8675
+ viewFontSizePt?: number | undefined;
8676
+ };
8677
+ maskIoU: number;
8678
+ foregroundMae: number;
8679
+ fontIdentity: "unverified";
8680
+ quality: "close" | "approximate";
8681
+ stickerUrl: string;
8682
+ composition: {
8683
+ width: number;
8684
+ height: number;
8685
+ x: number;
8686
+ y: number;
8687
+ scale: number;
8688
+ };
8689
+ diagnostics: {
8690
+ method: "local-white-fill-dark-outline";
8691
+ textPixelCount: number;
8692
+ outlinePixelCount: number;
8693
+ backgroundExcluded: true;
8694
+ observedLineCount: number;
8695
+ expectedLineCount: number;
8696
+ renderCount: number;
8697
+ clipped: boolean;
8698
+ comparison: "segmented-text-and-outline";
8699
+ resampling: "none" | "lanczos3";
8700
+ maskMetric: "white-fill-iou";
8701
+ outlineIoU: number;
8702
+ emojiPixelCount: number;
8703
+ residualMetric: "segmented-text-outline-and-warm-emoji";
8704
+ foregroundMetric: "estimated-background-composite-MAE";
8705
+ };
8706
+ } | undefined;
8707
+ reasonCode?: string | null | undefined;
8708
+ nextActions?: string[] | undefined;
8709
+ fitAttempted?: boolean | undefined;
8710
+ }, {
8711
+ selection: "nearest" | "before" | "after";
8712
+ contactSheet: {
8713
+ url: string;
8714
+ width: number;
8715
+ height: number;
8716
+ cells: {
8717
+ frameIndex: number;
8718
+ box: {
8719
+ width: number;
8720
+ height: number;
8721
+ x: number;
8722
+ y: number;
8723
+ };
8724
+ frameUrl: string;
8725
+ }[];
8726
+ } | null;
8727
+ version: 1;
8728
+ operation: "extract_frames";
8729
+ source: {
8730
+ durationMs: number;
8731
+ encodedWidth: number;
8732
+ encodedHeight: number;
8733
+ displayWidth: number;
8734
+ displayHeight: number;
8735
+ rotationDegrees: number;
8736
+ sampleAspectRatio: string;
8737
+ timeBase: string;
8738
+ startPts: string;
8739
+ startTimeMs: number;
8740
+ frameCount: number;
8741
+ variableFrameRate: boolean;
8742
+ sha256: string;
8743
+ bytes: number;
8744
+ };
8745
+ frames: {
8746
+ url: string;
8747
+ index: number;
8748
+ requestedTimeMs: number;
8749
+ timeMs: number;
8750
+ sourcePts: string;
8751
+ frameIndex: number;
8752
+ width: number;
8753
+ height: number;
8754
+ }[];
8755
+ manifestUrl: string;
8756
+ } | {
8757
+ version: 1;
8758
+ operation: "detect_scenes";
8759
+ source: {
8760
+ durationMs: number;
8761
+ encodedWidth: number;
8762
+ encodedHeight: number;
8763
+ displayWidth: number;
8764
+ displayHeight: number;
8765
+ rotationDegrees: number;
8766
+ sampleAspectRatio: string;
8767
+ timeBase: string;
8768
+ startPts: string;
8769
+ startTimeMs: number;
8770
+ frameCount: number;
8771
+ variableFrameRate: boolean;
8772
+ sha256: string;
8773
+ bytes: number;
8774
+ };
8775
+ manifestUrl: string;
8776
+ scenes: {
8777
+ startMs: number;
8778
+ endMs: number;
8779
+ startPts: string;
8780
+ index: number;
8781
+ startFrameIndex: number;
8782
+ endFrameIndexExclusive: number;
8783
+ endPts: string | null;
8784
+ }[];
8785
+ detector: {
8786
+ name: string;
8787
+ version: string;
8788
+ settings: Record<string, number>;
8789
+ };
8790
+ warnings: string[];
8791
+ } | {
8792
+ version: 1;
8793
+ operation: "read_image_text";
8794
+ source: {
8795
+ encodedWidth: number;
8796
+ encodedHeight: number;
8797
+ displayWidth: number;
8798
+ displayHeight: number;
8799
+ sha256: string;
8800
+ bytes: number;
8801
+ exifOrientation: number;
8802
+ alphaBackground: "white";
8803
+ };
8804
+ manifestUrl: string;
8805
+ warnings: string[];
8806
+ model: {
8807
+ name: string;
8808
+ runtime: string;
8809
+ device: "cpu";
8810
+ modelHashes: Record<string, string>;
8811
+ orientationClassifier: string;
8812
+ recognitionThreshold: number;
8813
+ coordinates: "display-oriented-source-pixels";
8814
+ };
8815
+ previewUrl: string;
8816
+ regions: {
8817
+ status: "readable" | "unreadable";
8818
+ id: string;
8819
+ text: string | null;
8820
+ box: {
8821
+ width: number;
8822
+ height: number;
8823
+ x: number;
8824
+ y: number;
8825
+ };
8826
+ polygon: {
8827
+ x: number;
8828
+ y: number;
8829
+ }[];
8830
+ rawText: string;
8831
+ confidence: number;
8832
+ }[];
8833
+ lines: {
8834
+ status: "readable" | "unreadable";
8835
+ id: string;
8836
+ text: string | null;
8837
+ box: {
8838
+ width: number;
8839
+ height: number;
8840
+ x: number;
8841
+ y: number;
8842
+ };
8843
+ rawText: string;
8844
+ confidence: number;
8845
+ readingOrder: number;
8846
+ regionIds: string[];
8847
+ }[];
8848
+ } | {
8849
+ version: 1;
8850
+ operation: "read_video_text";
8851
+ source: {
8852
+ durationMs: number;
8853
+ encodedWidth: number;
8854
+ encodedHeight: number;
8855
+ displayWidth: number;
8856
+ displayHeight: number;
8857
+ rotationDegrees: number;
8858
+ sampleAspectRatio: string;
8859
+ timeBase: string;
8860
+ startPts: string;
8861
+ startTimeMs: number;
8862
+ frameCount: number;
8863
+ variableFrameRate: boolean;
8864
+ sha256: string;
8865
+ bytes: number;
8866
+ };
8867
+ frames: {
8868
+ endMs: number;
8869
+ timeMs: number;
8870
+ sourcePts: string;
8871
+ frameIndex: number;
8872
+ regions: {
8873
+ status: "readable" | "unreadable";
8874
+ id: string;
8875
+ text: string | null;
8876
+ box: {
8877
+ width: number;
8878
+ height: number;
8879
+ x: number;
8880
+ y: number;
8881
+ };
8882
+ polygon: {
8883
+ x: number;
8884
+ y: number;
8885
+ }[];
8886
+ rawText: string;
8887
+ confidence: number;
8888
+ }[];
8889
+ lines: {
8890
+ status: "readable" | "unreadable";
8891
+ id: string;
8892
+ text: string | null;
8893
+ box: {
8894
+ width: number;
8895
+ height: number;
8896
+ x: number;
8897
+ y: number;
8898
+ };
8899
+ rawText: string;
8900
+ confidence: number;
8901
+ readingOrder: number;
8902
+ regionIds: string[];
8903
+ }[];
8904
+ sceneChange: boolean;
8905
+ previewUrl?: string | undefined;
8906
+ }[];
8907
+ manifestUrl: string;
8908
+ warnings: string[];
8909
+ model: {
8910
+ name: string;
8911
+ runtime: string;
8912
+ device: "cpu";
8913
+ modelHashes: Record<string, string>;
8914
+ orientationClassifier: string;
8915
+ recognitionThreshold: number;
8916
+ coordinates: "display-oriented-source-pixels";
8917
+ };
8918
+ tracks: {
8919
+ id: string;
8920
+ text: string | null;
8921
+ rawText: string;
8922
+ firstObservedMs: number;
8923
+ lastObservedEndMs: number;
8924
+ observations: {
8925
+ endMs: number;
8926
+ timeMs: number;
8927
+ sourcePts: string;
8928
+ frameIndex: number;
8929
+ box: {
8930
+ width: number;
8931
+ height: number;
8932
+ x: number;
8933
+ y: number;
8934
+ };
8935
+ confidence: number;
8936
+ sampleIndex: number;
8937
+ lineId: string;
8938
+ }[];
8939
+ }[];
8940
+ coverage: {
8941
+ complete: boolean;
8942
+ range: {
8943
+ startMs: number;
8944
+ endMs: number;
8945
+ };
8946
+ mode: "fast" | "frame_scan";
8947
+ uninspected: {
8948
+ startMs: number;
8949
+ endMs: number;
8950
+ }[];
8951
+ inspected: {
8952
+ startMs: number;
8953
+ endMs: number;
8954
+ sourcePts: string;
8955
+ frameIndex: number;
8956
+ }[];
8957
+ };
8958
+ } | {
8959
+ status: "no_audio" | "no_speech_detected" | "transcribed";
8960
+ text: string;
8961
+ version: 1;
8962
+ operation: "transcribe_audio";
8963
+ source: {
8964
+ durationMs: number;
8965
+ sha256: string;
8966
+ bytes: number;
8967
+ hasAudio: boolean;
8968
+ originStartMs: number;
8969
+ audioStartPts: string | null;
8970
+ audioTimeBase: string | null;
8971
+ sampleRate: number | null;
8972
+ channels: number | null;
8973
+ channelLayout: string | null;
8974
+ audioOffsetMs: number | null;
8975
+ };
8976
+ manifestUrl: string;
8977
+ warnings: string[];
8978
+ model: {
8979
+ name: string;
8980
+ sha256: Record<string, string>;
8981
+ runtime: string;
8982
+ device: "cpu";
8983
+ repository: string;
8984
+ revision: string;
8985
+ computeType: "int8";
8986
+ vad: string;
8987
+ beamSize: number;
8988
+ temperature: number;
8989
+ conditionOnPreviousText: boolean;
8990
+ };
8991
+ coverage: {
8992
+ requestedRange: {
8993
+ startMs: number;
8994
+ endMs: number;
8995
+ };
8996
+ analyzed: {
8997
+ startMs: number;
8998
+ endMs: number;
8999
+ }[];
9000
+ withoutAudio: {
9001
+ startMs: number;
9002
+ endMs: number;
9003
+ }[];
9004
+ sampleRoundingToleranceMs: number;
9005
+ };
9006
+ segments: {
9007
+ text: string;
9008
+ timing: "estimated";
9009
+ startMs: number;
9010
+ endMs: number;
9011
+ index: number;
9012
+ avgLogProbability: number;
9013
+ noSpeechProbability: number;
9014
+ words: {
9015
+ text: string;
9016
+ timing: "estimated";
9017
+ startMs: number;
9018
+ endMs: number;
9019
+ probability: number;
9020
+ }[];
9021
+ }[];
9022
+ language: string | null;
9023
+ languageProbability: number | null;
9024
+ segmentTiming: "estimated" | "unavailable";
9025
+ wordTiming: "estimated" | "unavailable";
9026
+ speakerLabels: "unavailable";
9027
+ channelPolicy: string;
9028
+ audioPreviewUrl?: string | undefined;
9029
+ } | {
9030
+ status: "no_audio" | "measured";
9031
+ version: 1;
9032
+ operation: "measure_audio_levels";
9033
+ source: {
9034
+ durationMs: number;
9035
+ sha256: string;
9036
+ bytes: number;
9037
+ hasAudio: boolean;
9038
+ originStartMs: number;
9039
+ audioStartPts: string | null;
9040
+ audioTimeBase: string | null;
9041
+ sampleRate: number | null;
9042
+ channels: number | null;
9043
+ channelLayout: string | null;
9044
+ audioOffsetMs: number | null;
9045
+ };
9046
+ manifestUrl: string;
9047
+ settings: {
9048
+ channelPolicy: "native-separate";
9049
+ windowMs: number;
9050
+ silenceThresholdDbfs: number;
9051
+ silenceMethod: "all-channel-window-rms";
9052
+ potentialClippingThreshold: number;
9053
+ loudnessMethod: "FFmpeg-ebur128-native-channels";
9054
+ ffmpegVersion: string;
9055
+ };
9056
+ warnings: string[];
9057
+ coverage: {
9058
+ requestedRange: {
9059
+ startMs: number;
9060
+ endMs: number;
9061
+ };
9062
+ analyzed: {
9063
+ startMs: number;
9064
+ endMs: number;
9065
+ }[];
9066
+ withoutAudio: {
9067
+ startMs: number;
9068
+ endMs: number;
9069
+ }[];
9070
+ sampleRoundingToleranceMs: number;
9071
+ };
9072
+ channels: {
9073
+ index: number;
9074
+ rmsDbfs: number | null;
9075
+ samplePeakDbfs: number | null;
9076
+ potentialClippedSamples: number;
9077
+ truePeakDbtp: number | null;
9078
+ sampleCount: number;
9079
+ intersampleOvershoot: boolean;
9080
+ }[];
9081
+ truePeakDbtp: number | null;
9082
+ windows: {
9083
+ startMs: number;
9084
+ endMs: number;
9085
+ channels: {
9086
+ index: number;
9087
+ rmsDbfs: number | null;
9088
+ samplePeakDbfs: number | null;
9089
+ potentialClippedSamples: number;
9090
+ }[];
9091
+ }[];
9092
+ silence: {
9093
+ startMs: number;
9094
+ endMs: number;
9095
+ }[];
9096
+ integratedLufs: number | null;
9097
+ loudnessTimeline: {
9098
+ startMs: number;
9099
+ endMs: number;
9100
+ momentaryLufs: number | null;
9101
+ shortTermLufs: number | null;
9102
+ }[];
9103
+ previewUrl?: string | undefined;
9104
+ } | {
9105
+ version: 1;
9106
+ operation: "sample_colors";
9107
+ source: {
9108
+ encodedWidth: number;
9109
+ encodedHeight: number;
9110
+ displayWidth: number;
9111
+ displayHeight: number;
9112
+ sha256: string;
9113
+ bytes: number;
9114
+ exifOrientation: number;
9115
+ colorSpace: "sRGB";
9116
+ colorPolicy: "embedded-ICC-to-sRGB-relative-colorimetric" | "untagged-assumed-sRGB";
9117
+ alphaPolicy: "straight-alpha-no-background-composite";
9118
+ };
9119
+ manifestUrl: string;
9120
+ warnings: string[];
9121
+ previewUrl: string;
9122
+ point: {
9123
+ x: number;
9124
+ y: number;
9125
+ rgba: number[];
9126
+ } | null;
9127
+ selectionBox: {
9128
+ width: number;
9129
+ height: number;
9130
+ x: number;
9131
+ y: number;
9132
+ } | null;
9133
+ selectedPixelCount: number;
9134
+ visiblePixelCount: number;
9135
+ alphaWeight: number;
9136
+ palette: {
9137
+ rgb: number[];
9138
+ hex: string;
9139
+ proportion: number;
9140
+ }[];
9141
+ otherProportion: number;
9142
+ method: "exact-observed-colors" | "5-bit-sRGB-bins-alpha-weighted-mean";
9143
+ } | {
9144
+ version: 1;
9145
+ operation: "measure_layout";
9146
+ source: {
9147
+ encodedWidth: number;
9148
+ encodedHeight: number;
9149
+ displayWidth: number;
9150
+ displayHeight: number;
9151
+ sha256: string;
9152
+ bytes: number;
9153
+ exifOrientation: number;
9154
+ colorSpace: "sRGB";
9155
+ colorPolicy: "embedded-ICC-to-sRGB-relative-colorimetric" | "untagged-assumed-sRGB";
9156
+ alphaPolicy: "straight-alpha-no-background-composite";
9157
+ };
9158
+ manifestUrl: string;
9159
+ warnings: string[];
9160
+ coordinates: "display-oriented-source-pixels";
9161
+ previewUrl: string;
9162
+ elements: {
9163
+ id: string;
9164
+ box: {
9165
+ width: number;
9166
+ height: number;
9167
+ x: number;
9168
+ y: number;
9169
+ } | null;
9170
+ geometry: "box" | "mask";
9171
+ normalizedBox: {
9172
+ width: number;
9173
+ height: number;
9174
+ x: number;
9175
+ y: number;
9176
+ } | null;
9177
+ boxArea: number;
9178
+ visibleArea: number | null;
9179
+ visibleFractionOfCanvas: number | null;
9180
+ boxCenter: {
9181
+ x: number;
9182
+ y: number;
9183
+ } | null;
9184
+ visibleCentroid: {
9185
+ x: number;
9186
+ y: number;
9187
+ } | null;
9188
+ margins: {
9189
+ left: number;
9190
+ top: number;
9191
+ right: number;
9192
+ bottom: number;
9193
+ } | null;
9194
+ }[];
9195
+ pairs: {
9196
+ a: string;
9197
+ b: string;
9198
+ boxIntersectionArea: number;
9199
+ boxIoU: number | null;
9200
+ visibleIntersectionArea: number | null;
9201
+ visibleIoU: number | null;
9202
+ axisGaps: {
9203
+ x: number;
9204
+ y: number;
9205
+ } | null;
9206
+ alignmentDeltas: {
9207
+ left: number;
9208
+ top: number;
9209
+ right: number;
9210
+ bottom: number;
9211
+ centerX: number;
9212
+ centerY: number;
9213
+ } | null;
9214
+ }[];
9215
+ } | {
9216
+ status: "unavailable" | "fitted";
9217
+ text: string | null;
9218
+ version: 1 | 2;
9219
+ operation: "match_text_style";
9220
+ source: {
9221
+ encodedWidth: number;
9222
+ encodedHeight: number;
9223
+ displayWidth: number;
9224
+ displayHeight: number;
9225
+ sha256: string;
9226
+ bytes: number;
9227
+ exifOrientation: number;
9228
+ colorSpace: "sRGB";
9229
+ colorPolicy: "embedded-ICC-to-sRGB-relative-colorimetric" | "untagged-assumed-sRGB";
9230
+ alphaPolicy: "straight-alpha-no-background-composite";
9231
+ };
9232
+ box: {
9233
+ width: number;
9234
+ height: number;
9235
+ x: number;
9236
+ y: number;
9237
+ };
9238
+ manifestUrl: string;
9239
+ warnings: string[];
9240
+ previewUrl: string;
9241
+ surface: "image-editor-element" | "native-text-sticker";
9242
+ reason: string | null;
9243
+ textSource: "supplied" | "ocr";
9244
+ renderer: {
9245
+ name: "UGC-ImageEditorComposition";
9246
+ ugcVersion: string;
9247
+ fonts: string[];
9248
+ fontHashes: Record<string, string>;
9249
+ maxRenders: number;
9250
+ } | {
9251
+ profile: "tiktok-classic-ios-47";
9252
+ name: "UGC-NativeTikTok";
9253
+ fontHashes: Record<string, string>;
9254
+ maxRenders: number;
9255
+ };
9256
+ backgroundColor: string;
9257
+ candidates: {
9258
+ element: {
9259
+ type: "text";
9260
+ id: string;
9261
+ text: string;
9262
+ width: number;
9263
+ height: number;
9264
+ x: number;
9265
+ y: number;
9266
+ zIndex: number;
9267
+ textIsVariable: false;
9268
+ font: "tiktok" | "arial" | "apple";
9269
+ fontSize: number;
9270
+ fontWeight: 700 | 400 | 500 | 600 | 800 | 900;
9271
+ color: string;
9272
+ strokeColor: string;
9273
+ outlineWidth: number;
9274
+ lineHeight: number;
9275
+ letterSpacing: number;
9276
+ textAlign: "left" | "right" | "center";
9277
+ verticalAlign: "top";
9278
+ autoWidth: false;
9279
+ paddingTop: number;
9280
+ paddingRight: number;
9281
+ paddingBottom: number;
9282
+ paddingLeft: number;
9283
+ };
9284
+ previewConfig: {
9285
+ width: number;
9286
+ height: number;
9287
+ elements: {
9288
+ type: "text";
9289
+ id: string;
9290
+ text: string;
9291
+ width: number;
9292
+ height: number;
9293
+ x: number;
9294
+ y: number;
9295
+ zIndex: number;
9296
+ textIsVariable: false;
9297
+ font: "tiktok" | "arial" | "apple";
9298
+ fontSize: number;
9299
+ fontWeight: 700 | 400 | 500 | 600 | 800 | 900;
9300
+ color: string;
9301
+ strokeColor: string;
9302
+ outlineWidth: number;
9303
+ lineHeight: number;
9304
+ letterSpacing: number;
9305
+ textAlign: "left" | "right" | "center";
9306
+ verticalAlign: "top";
9307
+ autoWidth: false;
9308
+ paddingTop: number;
9309
+ paddingRight: number;
9310
+ paddingBottom: number;
9311
+ paddingLeft: number;
9312
+ }[];
9313
+ aspectRatio: string;
9314
+ dimensionPreset: "custom";
9315
+ backgroundType: "color";
9316
+ backgroundColor: string;
9317
+ };
9318
+ maskIoU: number;
9319
+ foregroundMae: number;
9320
+ fontIdentity: "unverified";
9321
+ quality: "close" | "approximate";
9322
+ }[];
9323
+ renders: number;
9324
+ nativeResult?: {
9325
+ profile: "tiktok-classic-ios-47";
9326
+ settings: {
9327
+ text: string;
9328
+ profile?: "tiktok-classic-ios-47" | undefined;
9329
+ fontSizePt?: number | undefined;
9330
+ canvasWidthPt?: number | undefined;
9331
+ canvasHeightPt?: number | undefined;
9332
+ containerWidthPt?: number | undefined;
9333
+ containerHeightPt?: number | undefined;
9334
+ originPt?: [number, number] | undefined;
9335
+ viewFontSizePt?: number | undefined;
9336
+ };
9337
+ maskIoU: number;
9338
+ foregroundMae: number;
9339
+ fontIdentity: "unverified";
9340
+ quality: "close" | "approximate";
9341
+ stickerUrl: string;
9342
+ composition: {
9343
+ width: number;
9344
+ height: number;
9345
+ x: number;
9346
+ y: number;
9347
+ scale: number;
9348
+ };
9349
+ diagnostics: {
9350
+ method: "local-white-fill-dark-outline";
9351
+ textPixelCount: number;
9352
+ outlinePixelCount: number;
9353
+ backgroundExcluded: true;
9354
+ observedLineCount: number;
9355
+ expectedLineCount: number;
9356
+ renderCount: number;
9357
+ clipped: boolean;
9358
+ comparison: "segmented-text-and-outline";
9359
+ resampling: "none" | "lanczos3";
9360
+ maskMetric: "white-fill-iou";
9361
+ outlineIoU: number;
9362
+ emojiPixelCount: number;
9363
+ residualMetric: "segmented-text-outline-and-warm-emoji";
9364
+ foregroundMetric: "estimated-background-composite-MAE";
9365
+ };
9366
+ } | undefined;
9367
+ reasonCode?: string | null | undefined;
9368
+ nextActions?: string[] | undefined;
9369
+ fitAttempted?: boolean | undefined;
9370
+ }>;