@trylimbo/sdk-issuer 0.2.24 → 0.2.25-canary.37

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.
@@ -181,13 +181,12 @@ declare const pointerLiteralSymbol: unique symbol;
181
181
  */
182
182
  declare const uniffiTypeNameSymbol: unique symbol;
183
183
  declare namespace trylimbo_issuer_d_exports {
184
- export { Action, ActionDetail, ActionKind, ActionKind_Tags, Action_Tags, Assertion, AssetDelivery, AssetDelivery_Tags, AssetFormat, AssetFormat_Tags, AssetIssuer, AssetIssuerInterface, AssetIssuerLike, AssetManifestSpec, AssetMarker, AssetMarkerInterface, AssetMarkerLike, AssetOrigin, AssetOrigin_Tags, Binder, BinderImpl, Code, Component, ComponentEvent, ComponentEvent_Tags, ConnectOptions, CreatedOrigin, CustomAction, DeriveOptions, EmbedOptions, FieldViolation, FileSink, FileSinkInterface, FileSinkLike, FileSource, FileSourceInterface, FileSourceLike, HeldBinder, HeldBinderInterface, HeldBinderLike, Identity, Ingredient, IngredientSource, IngredientSource_Tags, InitOptions, InitOutcome, IsccBinder, IsccBinderInterface, IsccBinderLike, JsonObject, JsonValue, MarkOptions, MarkOutcome, MemorySink, MemorySinkInterface, MemorySinkLike, MemorySource, MemorySourceInterface, MemorySourceLike, OpenedOrigin, Origin, Origin_Tags, PluginAuthor, RangeSink, RangeSinkImpl, RangeSource, RangeSourceImpl, Region, RotationPolicy, SdkError, SdkError_Tags, SegmentKind, SegmentOutcome, SignOptions, SignOutcome, SignOutput, SignOutput_Tags, SignerClient, SignerClientInterface, SignerClientLike, SigningVault, SoftBinding, StandardAction, StreamDelivery, StreamDelivery_Tags, StreamIssuer, StreamIssuerInterface, StreamIssuerLike, StreamManifestSpec, StreamSession, StreamSessionInterface, StreamSessionLike, StreamStart, Thumbnail, Timestamp, Url, VaultPublicKey, classifySegment, _default$1 as default, embed };
184
+ export { Action, ActionDetail, ActionKind, ActionKind_Tags, Action_Tags, Assertion, AssetDelivery, AssetDelivery_Tags, AssetIssuer, AssetIssuerInterface, AssetIssuerLike, AssetManifestSpec, AssetMarker, AssetMarkerInterface, AssetMarkerLike, AssetOrigin, AssetOrigin_Tags, Block, ByteRange, Code, Component, ComponentEvent, ComponentEvent_Tags, Compute, ComputeImpl, ComputeRequest, ConnectOptions, CreatedOrigin, CustomAction, EmbedOptions, FieldViolation, FileSink, FileSinkInterface, FileSinkLike, FileSource, FileSourceInterface, FileSourceLike, Identity, Ingredient, IngredientKind, IngredientKind_Tags, InitOptions, InitOutcome, JsonObject, JsonValue, MarkOptions, MarkOutcome, MemorySink, MemorySinkInterface, MemorySinkLike, MemorySource, MemorySourceInterface, MemorySourceLike, MintRequest, OpenedOrigin, PluginAuthor, RangeSink, RangeSinkImpl, RangeSource, RangeSourceImpl, RotationPolicy, Scope, SdkError, SdkError_Tags, SegmentKind, SegmentOutcome, SessionKey, SignOptions, SignOutcome, SignOutput, SignOutput_Tags, SignerClient, SignerClientInterface, SignerClientLike, SigningVault, SoftBinding, SoftBindingSource, SoftBindingSource_Tags, SoftwareAgent, StandardAction, StreamDelivery, StreamIssuer, StreamIssuerInterface, StreamIssuerLike, StreamManifestSpec, StreamOrigin, StreamOrigin_Tags, StreamSession, StreamSessionInterface, StreamSessionLike, StreamStart, Thumbnail, Timespan, Url, classifySegment, computeSoftBinding, _default$1 as default, embed };
185
185
  }
186
186
  /**
187
- * Classify a fragmented-MP4 segment from a [`RangeSource`] as init/media/unknown: the
188
- * SDK-owned box parse (`moov` vs `moof`) a streaming consumer uses to route each segment
189
- * to [`StreamIssuer::init`](stream::StreamIssuer::init) vs
190
- * [`StreamSession::sign`](stream::StreamSession::sign) without hand-parsing ISOBMFF itself.
187
+ * Classify a fragmented-MP4 segment as init, media or unknown (`moov` vs `moof`), so a streaming
188
+ * consumer routes each segment to `StreamIssuer.init` or `StreamSession.sign` without parsing
189
+ * ISOBMFF itself.
191
190
  *
192
191
  * Async because it reads, and reading is the caller's storage: the two windows below may each
193
192
  * be a round trip. It stays off the island, uniquely among the read-path entry points, because
@@ -202,22 +201,22 @@ export declare function classifySegment(source: RangeSource, asyncOpts_?: {
202
201
  signal: AbortSignal;
203
202
  }): Promise<SegmentKind>;
204
203
  /**
205
- * Embed a signed manifest into an asset, writing the composed result back through
206
- * `sink`. `plugins` are the caller's plugins for non-c2pa formats (e.g. MXF), in dispatch
207
- * order, resolved the same way [`AssetIssuer::sign`](asset::AssetIssuer::sign) resolves
208
- * them, per [the `plugins` contract](crate::asset#the-plugins-contract): the write lands on a
209
- * bounded region for a plugin match, on the whole (small) asset otherwise; an empty list is
210
- * a c2pa-native embed. `format` overrides the sniffed format. Pure local byte-wrangling: no
211
- * signer round-trip.
204
+ * The values this SDK computes for `alg` over an asset, `[]` when it finds none. `format` is
205
+ * the asset's media type; omitted, the bytes name it.
212
206
  *
213
- * # Why the body is offloaded rather than run inline
207
+ * # Errors
214
208
  *
215
- * UniFFI polls a future on the thread that called it and never spawns, so an `async fn` whose
216
- * body never suspends completes in its first poll, on the caller's thread, blocking it exactly
217
- * as a sync export would: measured at 88ms for a 10MB asset on Node, during which nothing else
218
- * in the process runs. It is also the read path's hard requirement, not just a courtesy: the
219
- * splice reads through `sink`, and the caller's thread is the one that has to answer those
220
- * reads. See [`task`](shared::task).
209
+ * An algorithm this SDK computes no value of, a `format` that is no media type or that the bytes
210
+ * contradict, an unreadable source, or no trustworthy answer.
211
+ */
212
+ export declare function computeSoftBinding(alg: string, source: RangeSource, format?: string | undefined, asyncOpts_?: {
213
+ signal: AbortSignal;
214
+ }): Promise<Array<Block>>;
215
+ /**
216
+ * Embed `sidecar`, the signed manifest a sign returned, into the asset `sink` holds, writing the
217
+ * composed result back through `sink`.
218
+ * `plugins` resolve a non-c2pa format (e.g. MXF) as `AssetIssuer.sign` resolves them; none is a
219
+ * c2pa-native embed. No signer round trip.
221
220
  *
222
221
  * # Errors
223
222
  *
@@ -225,31 +224,37 @@ export declare function classifySegment(source: RangeSource, asyncOpts_?: {
225
224
  * authoring/`locate` disagrees after the write, or the c2pa handler can't
226
225
  * parse/splice the asset.
227
226
  */
228
- export declare function embed(sink: RangeSink, manifest: ArrayBuffer, options: EmbedOptions, plugins: Array<PluginAuthor>, asyncOpts_?: {
227
+ export declare function embed(sink: RangeSink, sidecar: ArrayBuffer, options: EmbedOptions, plugins?: Array<PluginAuthor>, asyncOpts_?: {
229
228
  signal: AbortSignal;
230
229
  }): Promise<void>;
231
230
  /**
232
- * Typealias from the type name used in the UDL file to the builtin type. This
233
- * is needed because the UDL type name is used in function/method signatures.
231
+ * The tool that performed an action (a C2PA `generator-info-map`).
234
232
  */
235
- export type Timestamp = string;
233
+ export type SoftwareAgent = {
234
+ name: string;
235
+ };
236
+ /**
237
+ * Generated factory for {@link SoftwareAgent} record objects.
238
+ */
239
+ export declare const SoftwareAgent: Readonly<{
240
+ create: (partial: Partial<SoftwareAgent> & Required<Omit<SoftwareAgent, never>>) => SoftwareAgent;
241
+ new: (partial: Partial<SoftwareAgent> & Required<Omit<SoftwareAgent, never>>) => SoftwareAgent;
242
+ defaults: () => Partial<SoftwareAgent>;
243
+ }>;
236
244
  /**
237
245
  * Typealias from the type name used in the UDL file to the builtin type. This
238
246
  * is needed because the UDL type name is used in function/method signatures.
239
247
  */
240
248
  export type Url = string;
241
249
  /**
242
- * Optional facts folded into a derived or workflow action.
250
+ * Facts recorded on an action.
243
251
  */
244
252
  export type ActionDetail = {
245
- /**
246
- * When the action happened.
247
- */
248
- when?: Timestamp;
249
- softwareAgent?: string;
253
+ when?: Date;
254
+ softwareAgent?: SoftwareAgent;
250
255
  description?: string;
251
256
  /**
252
- * The URI its term is published at, e.g.
257
+ * The URI of an IPTC or C2PA term, e.g.
253
258
  * `http://cv.iptc.org/newscodes/digitalsourcetype/digitalCapture`.
254
259
  */
255
260
  sourceType?: Url;
@@ -287,30 +292,28 @@ export declare const Assertion: Readonly<{
287
292
  defaults: () => Partial<Assertion>;
288
293
  }>;
289
294
  /**
290
- * The asset is an original; the signer derives `c2pa.created`.
295
+ * The asset is an original; the signer derives `c2pa.created` from these facts.
291
296
  */
292
297
  export type CreatedOrigin = {
293
298
  /**
294
- * The URI its term is published at, e.g.
299
+ * The URI of an IPTC or C2PA term, e.g.
295
300
  * `http://cv.iptc.org/newscodes/digitalsourcetype/digitalCapture`.
296
301
  */
297
302
  sourceType: Url;
298
- detail?: ActionDetail;
303
+ when?: Date;
304
+ softwareAgent?: SoftwareAgent;
305
+ description?: string;
299
306
  };
300
307
  /**
301
308
  * Generated factory for {@link CreatedOrigin} record objects.
302
309
  */
303
310
  export declare const CreatedOrigin: Readonly<{
304
- create: (partial: Partial<CreatedOrigin> & Required<Omit<CreatedOrigin, "detail">>) => CreatedOrigin;
305
- new: (partial: Partial<CreatedOrigin> & Required<Omit<CreatedOrigin, "detail">>) => CreatedOrigin;
311
+ create: (partial: Partial<CreatedOrigin> & Required<Omit<CreatedOrigin, "description" | "softwareAgent" | "when">>) => CreatedOrigin;
312
+ new: (partial: Partial<CreatedOrigin> & Required<Omit<CreatedOrigin, "description" | "softwareAgent" | "when">>) => CreatedOrigin;
306
313
  defaults: () => Partial<CreatedOrigin>;
307
314
  }>;
308
315
  /**
309
316
  * A canonical gRPC/Connect status code: the coarse, closed failure class.
310
- *
311
- * The wasm lane projects this as a camelCase string like every other tagged value
312
- * there, so a consumer narrows on `err.code === "resourceExhausted"`; the native lane
313
- * projects an enum.
314
317
  */
315
318
  export declare enum Code {
316
319
  Canceled = 0,
@@ -335,7 +338,9 @@ export declare enum Code {
335
338
  */
336
339
  export type FieldViolation = {
337
340
  /**
338
- * A dotted proto path to the offending field (`""` for a message-level rule).
341
+ * The offending field: rooted at the call's argument when an SDK refuses it
342
+ * (`options.soft_bindings[1].alg`), at the request when a service does
343
+ * (`provenance.actions[0].label`).
339
344
  */
340
345
  field: string;
341
346
  /**
@@ -343,7 +348,7 @@ export type FieldViolation = {
343
348
  */
344
349
  description: string;
345
350
  /**
346
- * The constraint id that failed (a protovalidate/CEL rule id), stable across releases.
351
+ * The rule that failed, such as `string.min_len` or `alg.unlisted`: the stable branch key.
347
352
  */
348
353
  reason: string;
349
354
  };
@@ -754,122 +759,56 @@ export declare class RangeSourceImpl extends UniffiAbstractObject implements Ran
754
759
  uniffiDestroy(): void;
755
760
  static instanceOf(obj_: any): obj_ is RangeSourceImpl;
756
761
  }
757
- export declare enum AssetFormat_Tags {
758
- Sniff = "Sniff",
759
- Declared = "Declared"
760
- }
761
- /**
762
- * The format of the asset a call is handed. Stated, never defaulted: sniffing is a choice the
763
- * caller makes by name, not what happens when they say nothing.
764
- */
765
- export declare const AssetFormat: Readonly<{
766
- instanceOf: (obj: any) => obj is AssetFormat;
767
- Sniff: {
768
- new (): {
769
- /**
770
- * @private
771
- * This field is private and should not be used, use `tag` instead.
772
- */
773
- readonly [uniffiTypeNameSymbol]: "AssetFormat";
774
- readonly tag: AssetFormat_Tags.Sniff;
775
- };
776
- "new"(): {
777
- /**
778
- * @private
779
- * This field is private and should not be used, use `tag` instead.
780
- */
781
- readonly [uniffiTypeNameSymbol]: "AssetFormat";
782
- readonly tag: AssetFormat_Tags.Sniff;
783
- };
784
- instanceOf(obj: any): obj is {
785
- /**
786
- * @private
787
- * This field is private and should not be used, use `tag` instead.
788
- */
789
- readonly [uniffiTypeNameSymbol]: "AssetFormat";
790
- readonly tag: AssetFormat_Tags.Sniff;
791
- };
792
- };
793
- Declared: {
794
- new (inner: {
795
- mediaType: string;
796
- }): {
797
- /**
798
- * @private
799
- * This field is private and should not be used, use `tag` instead.
800
- */
801
- readonly [uniffiTypeNameSymbol]: "AssetFormat";
802
- readonly tag: AssetFormat_Tags.Declared;
803
- readonly inner: Readonly<{
804
- mediaType: string;
805
- }>;
806
- };
807
- "new"(inner: {
808
- mediaType: string;
809
- }): {
810
- /**
811
- * @private
812
- * This field is private and should not be used, use `tag` instead.
813
- */
814
- readonly [uniffiTypeNameSymbol]: "AssetFormat";
815
- readonly tag: AssetFormat_Tags.Declared;
816
- readonly inner: Readonly<{
817
- mediaType: string;
818
- }>;
819
- };
820
- instanceOf(obj: any): obj is {
821
- /**
822
- * @private
823
- * This field is private and should not be used, use `tag` instead.
824
- */
825
- readonly [uniffiTypeNameSymbol]: "AssetFormat";
826
- readonly tag: AssetFormat_Tags.Declared;
827
- readonly inner: Readonly<{
828
- mediaType: string;
829
- }>;
830
- };
831
- };
832
- }>;
833
- /**
834
- * The format of the asset a call is handed. Stated, never defaulted: sniffing is a choice the
835
- * caller makes by name, not what happens when they say nothing.
836
- */
837
- export type AssetFormat = InstanceType<typeof AssetFormat['Sniff' | 'Declared']>;
838
- export declare enum IngredientSource_Tags {
762
+ export declare enum IngredientKind_Tags {
839
763
  Asset = "Asset",
840
764
  Descriptor = "Descriptor"
841
765
  }
842
- export declare const IngredientSource: Readonly<{
843
- instanceOf: (obj: any) => obj is IngredientSource;
766
+ /**
767
+ * What an ingredient is: an asset whose manifest is read, or a description.
768
+ */
769
+ export declare const IngredientKind: Readonly<{
770
+ instanceOf: (obj: any) => obj is IngredientKind;
844
771
  Asset: {
845
772
  new (inner: {
846
773
  source: RangeSource;
847
- format: AssetFormat;
774
+ format?: string;
775
+ discoveredBy: Array<string>;
848
776
  }): {
849
777
  /**
850
778
  * @private
851
779
  * This field is private and should not be used, use `tag` instead.
852
780
  */
853
- readonly [uniffiTypeNameSymbol]: "IngredientSource";
854
- readonly tag: IngredientSource_Tags.Asset;
781
+ readonly [uniffiTypeNameSymbol]: "IngredientKind";
782
+ readonly tag: IngredientKind_Tags.Asset;
855
783
  readonly inner: Readonly<{
856
784
  source: RangeSource;
857
- format: AssetFormat;
785
+ format?: string;
786
+ discoveredBy: Array<string>;
858
787
  }>;
859
788
  };
860
- "new"(inner: {
789
+ new: (partial: Parameters<(partial: Partial<{
861
790
  source: RangeSource;
862
- format: AssetFormat;
863
- }): {
791
+ format?: string;
792
+ discoveredBy: Array<string>;
793
+ }> & Required<Omit<{
794
+ source: RangeSource;
795
+ format?: string;
796
+ discoveredBy: Array<string>;
797
+ }, "discoveredBy" | "format">>) => {
798
+ source: RangeSource;
799
+ format?: string;
800
+ discoveredBy: Array<string>;
801
+ }>[0]) => {
864
802
  /**
865
803
  * @private
866
804
  * This field is private and should not be used, use `tag` instead.
867
805
  */
868
- readonly [uniffiTypeNameSymbol]: "IngredientSource";
869
- readonly tag: IngredientSource_Tags.Asset;
806
+ readonly [uniffiTypeNameSymbol]: "IngredientKind";
807
+ readonly tag: IngredientKind_Tags.Asset;
870
808
  readonly inner: Readonly<{
871
809
  source: RangeSource;
872
- format: AssetFormat;
810
+ format?: string;
811
+ discoveredBy: Array<string>;
873
812
  }>;
874
813
  };
875
814
  instanceOf(obj: any): obj is {
@@ -877,43 +816,40 @@ export declare const IngredientSource: Readonly<{
877
816
  * @private
878
817
  * This field is private and should not be used, use `tag` instead.
879
818
  */
880
- readonly [uniffiTypeNameSymbol]: "IngredientSource";
881
- readonly tag: IngredientSource_Tags.Asset;
819
+ readonly [uniffiTypeNameSymbol]: "IngredientKind";
820
+ readonly tag: IngredientKind_Tags.Asset;
882
821
  readonly inner: Readonly<{
883
822
  source: RangeSource;
884
- format: AssetFormat;
823
+ format?: string;
824
+ discoveredBy: Array<string>;
885
825
  }>;
886
826
  };
887
827
  };
888
828
  Descriptor: {
889
829
  new (inner: {
890
- format?: string;
830
+ format: string;
891
831
  }): {
892
832
  /**
893
833
  * @private
894
834
  * This field is private and should not be used, use `tag` instead.
895
835
  */
896
- readonly [uniffiTypeNameSymbol]: "IngredientSource";
897
- readonly tag: IngredientSource_Tags.Descriptor;
836
+ readonly [uniffiTypeNameSymbol]: "IngredientKind";
837
+ readonly tag: IngredientKind_Tags.Descriptor;
898
838
  readonly inner: Readonly<{
899
- format?: string;
839
+ format: string;
900
840
  }>;
901
841
  };
902
- new: (partial: Parameters<(partial: Partial<{
903
- format?: string;
904
- }> & Required<Omit<{
905
- format?: string;
906
- }, "format">>) => {
907
- format?: string;
908
- }>[0]) => {
842
+ "new"(inner: {
843
+ format: string;
844
+ }): {
909
845
  /**
910
846
  * @private
911
847
  * This field is private and should not be used, use `tag` instead.
912
848
  */
913
- readonly [uniffiTypeNameSymbol]: "IngredientSource";
914
- readonly tag: IngredientSource_Tags.Descriptor;
849
+ readonly [uniffiTypeNameSymbol]: "IngredientKind";
850
+ readonly tag: IngredientKind_Tags.Descriptor;
915
851
  readonly inner: Readonly<{
916
- format?: string;
852
+ format: string;
917
853
  }>;
918
854
  };
919
855
  instanceOf(obj: any): obj is {
@@ -921,15 +857,18 @@ export declare const IngredientSource: Readonly<{
921
857
  * @private
922
858
  * This field is private and should not be used, use `tag` instead.
923
859
  */
924
- readonly [uniffiTypeNameSymbol]: "IngredientSource";
925
- readonly tag: IngredientSource_Tags.Descriptor;
860
+ readonly [uniffiTypeNameSymbol]: "IngredientKind";
861
+ readonly tag: IngredientKind_Tags.Descriptor;
926
862
  readonly inner: Readonly<{
927
- format?: string;
863
+ format: string;
928
864
  }>;
929
865
  };
930
866
  };
931
867
  }>;
932
- export type IngredientSource = InstanceType<typeof IngredientSource['Asset' | 'Descriptor']>;
868
+ /**
869
+ * What an ingredient is: an asset whose manifest is read, or a description.
870
+ */
871
+ export type IngredientKind = InstanceType<typeof IngredientKind['Asset' | 'Descriptor']>;
933
872
  /**
934
873
  * A pre-rendered thumbnail, attached to the manifest as its `c2pa.thumbnail.claim` resource or
935
874
  * to an ingredient as its `c2pa.thumbnail.ingredient`. The split-signer has no asset bytes to
@@ -939,24 +878,23 @@ export type IngredientSource = InstanceType<typeof IngredientSource['Asset' | 'D
939
878
  export type Thumbnail = {
940
879
  data: ArrayBuffer;
941
880
  /**
942
- * MIME type. `image/jpeg` and `image/png` are the interop-safe choices: consumer
943
- * verifiers like Adobe inspect may not render other previews.
881
+ * Its media type, judged against `data` as an asset's is; `None` reads it from `data`.
882
+ * `image/jpeg` and `image/png` are the ones consumer verifiers render.
944
883
  */
945
- format: string;
884
+ format?: string;
946
885
  };
947
886
  /**
948
887
  * Generated factory for {@link Thumbnail} record objects.
949
888
  */
950
889
  export declare const Thumbnail: Readonly<{
951
- create: (partial: Partial<Thumbnail> & Required<Omit<Thumbnail, never>>) => Thumbnail;
952
- new: (partial: Partial<Thumbnail> & Required<Omit<Thumbnail, never>>) => Thumbnail;
890
+ create: (partial: Partial<Thumbnail> & Required<Omit<Thumbnail, "format">>) => Thumbnail;
891
+ new: (partial: Partial<Thumbnail> & Required<Omit<Thumbnail, "format">>) => Thumbnail;
953
892
  defaults: () => Partial<Thumbnail>;
954
893
  }>;
955
894
  export type Ingredient = {
956
- source: IngredientSource;
895
+ kind: IngredientKind;
957
896
  title?: string;
958
897
  thumbnail?: Thumbnail;
959
- discoveredBy: Array<string>;
960
898
  };
961
899
  /**
962
900
  * Generated factory for {@link Ingredient} record objects.
@@ -1094,15 +1032,15 @@ export type AssetOrigin = InstanceType<typeof AssetOrigin['Created' | 'Opened' |
1094
1032
  */
1095
1033
  export type JsonObject = string;
1096
1034
  /**
1097
- * An entity-namespaced action (reverse-DNS `label`; the signer rejects
1098
- * `c2pa.*`/`cawg.*`). `params` merges into the action's `parameters`.
1035
+ * An entity-namespaced action: a reverse-DNS `label` outside `c2pa.` and `cawg.`, which are
1036
+ * refused in any case. A C2PA action is a [`StandardAction`].
1099
1037
  */
1100
1038
  export type CustomAction = {
1101
1039
  label: string;
1102
- params: JsonObject;
1040
+ parameters: JsonObject;
1103
1041
  detail?: ActionDetail;
1104
1042
  /**
1105
- * `Component.id`s this action acted on.
1043
+ * The `components` keys this action acted on.
1106
1044
  */
1107
1045
  componentIds: Array<string>;
1108
1046
  };
@@ -1110,13 +1048,62 @@ export type CustomAction = {
1110
1048
  * Generated factory for {@link CustomAction} record objects.
1111
1049
  */
1112
1050
  export declare const CustomAction: Readonly<{
1113
- create: (partial: Partial<CustomAction> & Required<Omit<CustomAction, "detail">>) => CustomAction;
1114
- new: (partial: Partial<CustomAction> & Required<Omit<CustomAction, "detail">>) => CustomAction;
1051
+ create: (partial: Partial<CustomAction> & Required<Omit<CustomAction, "componentIds" | "detail">>) => CustomAction;
1052
+ new: (partial: Partial<CustomAction> & Required<Omit<CustomAction, "componentIds" | "detail">>) => CustomAction;
1115
1053
  defaults: () => Partial<CustomAction>;
1116
1054
  }>;
1055
+ /**
1056
+ * A `soft-binding-timespan-map`: where the range starts in the media and how long it lasts, in
1057
+ * whole milliseconds.
1058
+ */
1059
+ export type Timespan = {
1060
+ start: number;
1061
+ duration: number;
1062
+ };
1063
+ /**
1064
+ * Generated factory for {@link Timespan} record objects.
1065
+ */
1066
+ export declare const Timespan: Readonly<{
1067
+ create: (partial: Partial<Timespan> & Required<Omit<Timespan, never>>) => Timespan;
1068
+ new: (partial: Partial<Timespan> & Required<Omit<Timespan, never>>) => Timespan;
1069
+ defaults: () => Partial<Timespan>;
1070
+ }>;
1071
+ /**
1072
+ * A `soft-binding-scope-map`: where in the content a value applies. Empty is the whole content.
1073
+ */
1074
+ export type Scope = {
1075
+ timespan?: Timespan;
1076
+ };
1077
+ /**
1078
+ * Generated factory for {@link Scope} record objects.
1079
+ */
1080
+ export declare const Scope: Readonly<{
1081
+ create: (partial: Partial<Scope> & Required<Omit<Scope, "timespan">>) => Scope;
1082
+ new: (partial: Partial<Scope> & Required<Omit<Scope, "timespan">>) => Scope;
1083
+ defaults: () => Partial<Scope>;
1084
+ }>;
1085
+ /**
1086
+ * A `soft-binding-block-map`.
1087
+ */
1088
+ export type Block = {
1089
+ value: ArrayBuffer;
1090
+ scope: Scope;
1091
+ };
1092
+ /**
1093
+ * Generated factory for {@link Block} record objects.
1094
+ */
1095
+ export declare const Block: Readonly<{
1096
+ create: (partial: Partial<Block> & Required<Omit<Block, "scope">>) => Block;
1097
+ new: (partial: Partial<Block> & Required<Omit<Block, "scope">>) => Block;
1098
+ defaults: () => Partial<Block>;
1099
+ }>;
1100
+ /**
1101
+ * One `c2pa.soft-binding` assertion (C2PA 2.4 18.10.3): a listed algorithm and its values, one
1102
+ * per block.
1103
+ */
1117
1104
  export type SoftBinding = {
1118
1105
  alg: string;
1119
- value: string;
1106
+ blocks: Array<Block>;
1120
1107
  };
1121
1108
  /**
1122
1109
  * Generated factory for {@link SoftBinding} record objects.
@@ -1149,13 +1136,12 @@ export declare enum ActionKind_Tags {
1149
1136
  ResizedProportional = "ResizedProportional",
1150
1137
  Transcoded = "Transcoded",
1151
1138
  Trimmed = "Trimmed",
1152
- Unknown = "Unknown",
1153
1139
  WatermarkedBound = "WatermarkedBound",
1154
1140
  WatermarkedUnbound = "WatermarkedUnbound"
1155
1141
  }
1156
1142
  /**
1157
- * The C2PA 2.3 workflow actions; see the core [`provenance::ActionKind`] for what each is.
1158
- * Mirrored for the one variant that carries a binding, which crosses as the two-string record.
1143
+ * The C2PA 2.4 workflow actions; see the core [`provenance::ActionKind`] for what each is.
1144
+ * Mirrored for the one variant that carries a binding, which crosses as the FFI record.
1159
1145
  */
1160
1146
  export declare const ActionKind: Readonly<{
1161
1147
  instanceOf: (obj: any) => obj is ActionKind;
@@ -1731,32 +1717,6 @@ export declare const ActionKind: Readonly<{
1731
1717
  readonly tag: ActionKind_Tags.Trimmed;
1732
1718
  };
1733
1719
  };
1734
- Unknown: {
1735
- new (): {
1736
- /**
1737
- * @private
1738
- * This field is private and should not be used, use `tag` instead.
1739
- */
1740
- readonly [uniffiTypeNameSymbol]: "ActionKind";
1741
- readonly tag: ActionKind_Tags.Unknown;
1742
- };
1743
- "new"(): {
1744
- /**
1745
- * @private
1746
- * This field is private and should not be used, use `tag` instead.
1747
- */
1748
- readonly [uniffiTypeNameSymbol]: "ActionKind";
1749
- readonly tag: ActionKind_Tags.Unknown;
1750
- };
1751
- instanceOf(obj: any): obj is {
1752
- /**
1753
- * @private
1754
- * This field is private and should not be used, use `tag` instead.
1755
- */
1756
- readonly [uniffiTypeNameSymbol]: "ActionKind";
1757
- readonly tag: ActionKind_Tags.Unknown;
1758
- };
1759
- };
1760
1720
  WatermarkedBound: {
1761
1721
  new (inner: {
1762
1722
  binding: SoftBinding;
@@ -1824,10 +1784,10 @@ export declare const ActionKind: Readonly<{
1824
1784
  };
1825
1785
  }>;
1826
1786
  /**
1827
- * The C2PA 2.3 workflow actions; see the core [`provenance::ActionKind`] for what each is.
1828
- * Mirrored for the one variant that carries a binding, which crosses as the two-string record.
1787
+ * The C2PA 2.4 workflow actions; see the core [`provenance::ActionKind`] for what each is.
1788
+ * Mirrored for the one variant that carries a binding, which crosses as the FFI record.
1829
1789
  */
1830
- export type ActionKind = InstanceType<typeof ActionKind['AddedText' | 'AdjustedColor' | 'ChangedSpeed' | 'Converted' | 'Cropped' | 'Deleted' | 'Drawing' | 'Dubbed' | 'Edited' | 'EditedMetadata' | 'Enhanced' | 'Filtered' | 'Mastered' | 'Mixed' | 'Orientation' | 'Published' | 'Remixed' | 'Repackaged' | 'Resized' | 'ResizedProportional' | 'Transcoded' | 'Trimmed' | 'Unknown' | 'WatermarkedBound' | 'WatermarkedUnbound']>;
1790
+ export type ActionKind = InstanceType<typeof ActionKind['AddedText' | 'AdjustedColor' | 'ChangedSpeed' | 'Converted' | 'Cropped' | 'Deleted' | 'Drawing' | 'Dubbed' | 'Edited' | 'EditedMetadata' | 'Enhanced' | 'Filtered' | 'Mastered' | 'Mixed' | 'Orientation' | 'Published' | 'Remixed' | 'Repackaged' | 'Resized' | 'ResizedProportional' | 'Transcoded' | 'Trimmed' | 'WatermarkedBound' | 'WatermarkedUnbound']>;
1831
1791
  export type StandardAction = {
1832
1792
  kind: ActionKind;
1833
1793
  detail?: ActionDetail;
@@ -1837,8 +1797,8 @@ export type StandardAction = {
1837
1797
  * Generated factory for {@link StandardAction} record objects.
1838
1798
  */
1839
1799
  export declare const StandardAction: Readonly<{
1840
- create: (partial: Partial<StandardAction> & Required<Omit<StandardAction, "detail">>) => StandardAction;
1841
- new: (partial: Partial<StandardAction> & Required<Omit<StandardAction, "detail">>) => StandardAction;
1800
+ create: (partial: Partial<StandardAction> & Required<Omit<StandardAction, "componentIds" | "detail">>) => StandardAction;
1801
+ new: (partial: Partial<StandardAction> & Required<Omit<StandardAction, "componentIds" | "detail">>) => StandardAction;
1842
1802
  defaults: () => Partial<StandardAction>;
1843
1803
  }>;
1844
1804
  export declare enum Action_Tags {
@@ -1908,8 +1868,7 @@ export declare const Action: Readonly<{
1908
1868
  }>;
1909
1869
  export type Action = InstanceType<typeof Action['Custom' | 'Standard']>;
1910
1870
  /**
1911
- * Pass `None` to skip the CAWG identity signing path entirely. Each entry of `identities` is
1912
- * one CAWG `VerifiedIdentity` object.
1871
+ * A CAWG identity assertion: each of `identities` is one CAWG `verifiedIdentities` entry.
1913
1872
  */
1914
1873
  export type Identity = {
1915
1874
  roles: Array<string>;
@@ -1919,8 +1878,8 @@ export type Identity = {
1919
1878
  * Generated factory for {@link Identity} record objects.
1920
1879
  */
1921
1880
  export declare const Identity: Readonly<{
1922
- create: (partial: Partial<Identity> & Required<Omit<Identity, never>>) => Identity;
1923
- new: (partial: Partial<Identity> & Required<Omit<Identity, never>>) => Identity;
1881
+ create: (partial: Partial<Identity> & Required<Omit<Identity, "roles">>) => Identity;
1882
+ new: (partial: Partial<Identity> & Required<Omit<Identity, "roles">>) => Identity;
1924
1883
  defaults: () => Partial<Identity>;
1925
1884
  }>;
1926
1885
  export declare enum ComponentEvent_Tags {
@@ -1982,6 +1941,7 @@ export declare const ComponentEvent: Readonly<{
1982
1941
  };
1983
1942
  Removed: {
1984
1943
  new (inner: {
1944
+ label: string;
1985
1945
  detail?: ActionDetail;
1986
1946
  }): {
1987
1947
  /**
@@ -1991,14 +1951,18 @@ export declare const ComponentEvent: Readonly<{
1991
1951
  readonly [uniffiTypeNameSymbol]: "ComponentEvent";
1992
1952
  readonly tag: ComponentEvent_Tags.Removed;
1993
1953
  readonly inner: Readonly<{
1954
+ label: string;
1994
1955
  detail?: ActionDetail;
1995
1956
  }>;
1996
1957
  };
1997
1958
  new: (partial: Parameters<(partial: Partial<{
1959
+ label: string;
1998
1960
  detail?: ActionDetail;
1999
1961
  }> & Required<Omit<{
1962
+ label: string;
2000
1963
  detail?: ActionDetail;
2001
1964
  }, "detail">>) => {
1965
+ label: string;
2002
1966
  detail?: ActionDetail;
2003
1967
  }>[0]) => {
2004
1968
  /**
@@ -2008,6 +1972,7 @@ export declare const ComponentEvent: Readonly<{
2008
1972
  readonly [uniffiTypeNameSymbol]: "ComponentEvent";
2009
1973
  readonly tag: ComponentEvent_Tags.Removed;
2010
1974
  readonly inner: Readonly<{
1975
+ label: string;
2011
1976
  detail?: ActionDetail;
2012
1977
  }>;
2013
1978
  };
@@ -2019,6 +1984,7 @@ export declare const ComponentEvent: Readonly<{
2019
1984
  readonly [uniffiTypeNameSymbol]: "ComponentEvent";
2020
1985
  readonly tag: ComponentEvent_Tags.Removed;
2021
1986
  readonly inner: Readonly<{
1987
+ label: string;
2022
1988
  detail?: ActionDetail;
2023
1989
  }>;
2024
1990
  };
@@ -2058,8 +2024,10 @@ export declare const ComponentEvent: Readonly<{
2058
2024
  * to be folded into and the variant has none.
2059
2025
  */
2060
2026
  export type ComponentEvent = InstanceType<typeof ComponentEvent['Placed' | 'Removed' | 'InputTo']>;
2027
+ /**
2028
+ * An ingredient other than the parent; see the core [`provenance::Component`].
2029
+ */
2061
2030
  export type Component = {
2062
- id: string;
2063
2031
  asset: Ingredient;
2064
2032
  event: ComponentEvent;
2065
2033
  };
@@ -2074,160 +2042,201 @@ export declare const Component: Readonly<{
2074
2042
  export type AssetManifestSpec = {
2075
2043
  title?: string;
2076
2044
  origin: AssetOrigin;
2045
+ /**
2046
+ * Every action performed on the asset; the manifest states the list is complete (C2PA
2047
+ * `allActionsIncluded`).
2048
+ */
2077
2049
  actions: Array<Action>;
2078
2050
  identity?: Identity;
2079
2051
  assertions: Array<Assertion>;
2080
- components: Array<Component>;
2052
+ /**
2053
+ * Keyed by the handle actions name them by.
2054
+ */
2055
+ components: Map<string, Component>;
2081
2056
  };
2082
2057
  /**
2083
2058
  * Generated factory for {@link AssetManifestSpec} record objects.
2084
2059
  */
2085
2060
  export declare const AssetManifestSpec: Readonly<{
2086
- create: (partial: Partial<AssetManifestSpec> & Required<Omit<AssetManifestSpec, "identity" | "title">>) => AssetManifestSpec;
2087
- new: (partial: Partial<AssetManifestSpec> & Required<Omit<AssetManifestSpec, "identity" | "title">>) => AssetManifestSpec;
2061
+ create: (partial: Partial<AssetManifestSpec> & Required<Omit<AssetManifestSpec, "actions" | "assertions" | "components" | "identity" | "title">>) => AssetManifestSpec;
2062
+ new: (partial: Partial<AssetManifestSpec> & Required<Omit<AssetManifestSpec, "actions" | "assertions" | "components" | "identity" | "title">>) => AssetManifestSpec;
2088
2063
  defaults: () => Partial<AssetManifestSpec>;
2089
2064
  }>;
2090
2065
  /**
2091
- * Transport tunables and per-request metadata for the signer connection.
2092
- *
2093
- * `headers`, when present, are attached to every RPC (e.g.
2094
- * `Authorization: Bearer …`, or routing/tenant metadata) and are
2095
- * lower-cased on the wire; omit them to connect with no extra metadata.
2096
- *
2097
- * # Both deadlines are required
2098
- *
2099
- * They were optional, and omitting them left a call with no deadline at all: a signer that
2100
- * accepted the connection and then stopped answering held the caller's thread for ever, with no
2101
- * cancellation path, because the SDK runs each call on a thread of its own and nothing was
2102
- * watching the clock. There is no figure the SDK could pick on a caller's behalf that is right
2103
- * for both a local signer and one across a region, so it asks.
2104
- *
2105
- * Neither bounds the hash: that runs client side, between the two legs of the signing protocol,
2106
- * and is not an RPC. These bound the network alone.
2066
+ * A byte range holding a bare C2PA manifest store, or reserved for one. A record of
2067
+ * primitives, so a plugin in its OWN UniFFI namespace declares a structurally identical
2068
+ * one and the two cross the boundary without sharing a Rust type.
2069
+ */
2070
+ export type ByteRange = {
2071
+ offset: bigint;
2072
+ length: bigint;
2073
+ };
2074
+ /**
2075
+ * Generated factory for {@link ByteRange} record objects.
2076
+ */
2077
+ export declare const ByteRange: Readonly<{
2078
+ create: (partial: Partial<ByteRange> & Required<Omit<ByteRange, never>>) => ByteRange;
2079
+ new: (partial: Partial<ByteRange> & Required<Omit<ByteRange, never>>) => ByteRange;
2080
+ defaults: () => Partial<ByteRange>;
2081
+ }>;
2082
+ /**
2083
+ * What one [`Compute::compute`] is asked: the asset and its media type.
2084
+ */
2085
+ export type ComputeRequest = {
2086
+ source: RangeSource;
2087
+ format: string;
2088
+ };
2089
+ /**
2090
+ * Generated factory for {@link ComputeRequest} record objects.
2091
+ */
2092
+ export declare const ComputeRequest: Readonly<{
2093
+ create: (partial: Partial<ComputeRequest> & Required<Omit<ComputeRequest, never>>) => ComputeRequest;
2094
+ new: (partial: Partial<ComputeRequest> & Required<Omit<ComputeRequest, never>>) => ComputeRequest;
2095
+ defaults: () => Partial<ComputeRequest>;
2096
+ }>;
2097
+ /**
2098
+ * The signer connection. Neither deadline bounds the hash, which runs client side between the
2099
+ * two RPCs.
2107
2100
  */
2108
2101
  export type ConnectOptions = {
2109
- headers?: Map<string, string>;
2110
2102
  /**
2111
- * Per-RPC deadline. Bounds one leg of the signing protocol, not the whole sign.
2103
+ * Sent on every request, names lower-cased; two names that differ only by case are refused.
2104
+ */
2105
+ headers: Map<string, string>;
2106
+ /**
2107
+ * Bounds one signer RPC, or how long a mark may wait for the next byte; the service's own
2108
+ * limit bounds a whole mark. Default 30 s.
2112
2109
  */
2113
- rpcTimeoutMs: number;
2110
+ rpcTimeout?: number;
2114
2111
  /**
2115
- * Bounds the initial connection setup, so an unreachable signer fails fast rather than
2116
- * waiting out the OS SYN timeout.
2112
+ * Bounds opening the connection. Default 5 s.
2117
2113
  */
2118
- connectTimeoutMs: number;
2114
+ connectTimeout?: number;
2119
2115
  };
2120
2116
  /**
2121
2117
  * Generated factory for {@link ConnectOptions} record objects.
2122
2118
  */
2123
2119
  export declare const ConnectOptions: Readonly<{
2124
- create: (partial: Partial<ConnectOptions> & Required<Omit<ConnectOptions, "headers">>) => ConnectOptions;
2125
- new: (partial: Partial<ConnectOptions> & Required<Omit<ConnectOptions, "headers">>) => ConnectOptions;
2120
+ create: (partial: Partial<ConnectOptions> & Required<Omit<ConnectOptions, "connectTimeout" | "headers" | "rpcTimeout">>) => ConnectOptions;
2121
+ new: (partial: Partial<ConnectOptions> & Required<Omit<ConnectOptions, "connectTimeout" | "headers" | "rpcTimeout">>) => ConnectOptions;
2126
2122
  defaults: () => Partial<ConnectOptions>;
2127
2123
  }>;
2128
2124
  /**
2129
- * Everything one [`Binder::derive`] needs beyond the asset.
2125
+ * What one [`embed`] is told beyond the sink, the sidecar and the plugins.
2130
2126
  */
2131
- export type DeriveOptions = {
2132
- format: AssetFormat;
2127
+ export type EmbedOptions = {
2128
+ /**
2129
+ * The asset's media type; `None` reads it from the sink's leading bytes.
2130
+ */
2131
+ format?: string;
2133
2132
  };
2134
2133
  /**
2135
- * Generated factory for {@link DeriveOptions} record objects.
2134
+ * Generated factory for {@link EmbedOptions} record objects.
2136
2135
  */
2137
- export declare const DeriveOptions: Readonly<{
2138
- create: (partial: Partial<DeriveOptions> & Required<Omit<DeriveOptions, never>>) => DeriveOptions;
2139
- new: (partial: Partial<DeriveOptions> & Required<Omit<DeriveOptions, never>>) => DeriveOptions;
2140
- defaults: () => Partial<DeriveOptions>;
2136
+ export declare const EmbedOptions: Readonly<{
2137
+ create: (partial: Partial<EmbedOptions> & Required<Omit<EmbedOptions, "format">>) => EmbedOptions;
2138
+ new: (partial: Partial<EmbedOptions> & Required<Omit<EmbedOptions, "format">>) => EmbedOptions;
2139
+ defaults: () => Partial<EmbedOptions>;
2141
2140
  }>;
2142
2141
  /**
2143
- * Everything one [`embed`] needs beyond the sink, the manifest and the plugins: how the
2144
- * asset's format is known, stated or sniffed from the sink's leading bytes.
2142
+ * Where a stream's init manifest lives. The init segment always carries it, so there is no
2143
+ * remote-only delivery, and the segment comes back as bytes, so there is no output to name.
2145
2144
  */
2146
- export type EmbedOptions = {
2147
- format: AssetFormat;
2145
+ export declare enum StreamDelivery {
2146
+ Embedded = 0,
2147
+ EmbeddedAndRemote = 1
2148
+ }
2149
+ /**
2150
+ * How long a session key signs, and when to rotate it.
2151
+ */
2152
+ export type RotationPolicy = {
2153
+ /**
2154
+ * From the key's creation, in whole seconds (C2PA `validityPeriod`); the verifier refuses
2155
+ * a segment signed after it.
2156
+ */
2157
+ validityPeriod: number;
2158
+ /**
2159
+ * The share of `validity_period`, 0 to 100, after which `rotation_due` is set.
2160
+ */
2161
+ refreshPercent: number;
2148
2162
  };
2149
2163
  /**
2150
- * Generated factory for {@link EmbedOptions} record objects.
2164
+ * Generated factory for {@link RotationPolicy} record objects.
2151
2165
  */
2152
- export declare const EmbedOptions: Readonly<{
2153
- create: (partial: Partial<EmbedOptions> & Required<Omit<EmbedOptions, never>>) => EmbedOptions;
2154
- new: (partial: Partial<EmbedOptions> & Required<Omit<EmbedOptions, never>>) => EmbedOptions;
2155
- defaults: () => Partial<EmbedOptions>;
2166
+ export declare const RotationPolicy: Readonly<{
2167
+ create: (partial: Partial<RotationPolicy> & Required<Omit<RotationPolicy, never>>) => RotationPolicy;
2168
+ new: (partial: Partial<RotationPolicy> & Required<Omit<RotationPolicy, never>>) => RotationPolicy;
2169
+ defaults: () => Partial<RotationPolicy>;
2156
2170
  }>;
2157
2171
  /**
2158
- * A soft-binding binder: how a recoverable binding is derived from an asset. Put these inside
2159
- * the issuer's manifest mode to sign and index under them, and pass them in verify options to
2160
- * recover. Implement it for an algorithm the SDK does not ship; the SDK's own are
2161
- * [`IsccBinder`] and [`HeldBinder`].
2162
- *
2163
- * `derive` answers this binder's binding for `source`, or `None` when there is none.
2164
- * `options.format` is how the asset's format is known. `None` and an error
2165
- * mean different things: `None` is "no binding here", an error is "the question could not be
2166
- * answered", so a binder that failed never reads as an unmarked asset.
2172
+ * Computes one soft-binding algorithm's values from an asset (a fingerprint calculated, a
2173
+ * watermark detected). `[]` is "no value here"; an error is "no trustworthy answer", so a failed
2174
+ * engine never reads as an unmarked asset.
2167
2175
  */
2168
- export interface Binder {
2169
- derive(source: RangeSource, options: DeriveOptions, asyncOpts_?: {
2176
+ export interface Compute {
2177
+ /**
2178
+ * The C2PA soft-binding algorithm list label, e.g. `io.iscc.v0`.
2179
+ */
2180
+ alg(): string;
2181
+ compute(request: ComputeRequest, asyncOpts_?: {
2170
2182
  signal: AbortSignal;
2171
- }): Promise<SoftBinding | undefined>;
2183
+ }): Promise<Array<Block>>;
2172
2184
  }
2173
2185
  /**
2174
- * A soft-binding binder: how a recoverable binding is derived from an asset. Put these inside
2175
- * the issuer's manifest mode to sign and index under them, and pass them in verify options to
2176
- * recover. Implement it for an algorithm the SDK does not ship; the SDK's own are
2177
- * [`IsccBinder`] and [`HeldBinder`].
2178
- *
2179
- * `derive` answers this binder's binding for `source`, or `None` when there is none.
2180
- * `options.format` is how the asset's format is known. `None` and an error
2181
- * mean different things: `None` is "no binding here", an error is "the question could not be
2182
- * answered", so a binder that failed never reads as an unmarked asset.
2186
+ * Computes one soft-binding algorithm's values from an asset (a fingerprint calculated, a
2187
+ * watermark detected). `[]` is "no value here"; an error is "no trustworthy answer", so a failed
2188
+ * engine never reads as an unmarked asset.
2183
2189
  */
2184
- export declare class BinderImpl extends UniffiAbstractObject implements Binder {
2185
- readonly [uniffiTypeNameSymbol] = "BinderImpl";
2190
+ export declare class ComputeImpl extends UniffiAbstractObject implements Compute {
2191
+ readonly [uniffiTypeNameSymbol] = "ComputeImpl";
2186
2192
  readonly [destructorGuardSymbol]: UniffiGcObject;
2187
2193
  readonly [pointerLiteralSymbol]: UniffiHandle;
2188
2194
  private constructor();
2189
- derive(source: RangeSource, options: DeriveOptions, asyncOpts_?: {
2195
+ /**
2196
+ * The C2PA soft-binding algorithm list label, e.g. `io.iscc.v0`.
2197
+ */
2198
+ alg(): string;
2199
+ compute(request: ComputeRequest, asyncOpts_?: {
2190
2200
  signal: AbortSignal;
2191
- }): Promise<SoftBinding | undefined>;
2201
+ }): Promise<Array<Block>>;
2192
2202
  uniffiDestroy(): void;
2193
- static instanceOf(obj_: any): obj_ is BinderImpl;
2203
+ static instanceOf(obj_: any): obj_ is ComputeImpl;
2194
2204
  }
2195
- export declare enum StreamDelivery_Tags {
2196
- Embedded = "Embedded",
2197
- Remote = "Remote",
2198
- Both = "Both"
2205
+ export declare enum SoftBindingSource_Tags {
2206
+ Builtin = "Builtin",
2207
+ Held = "Held",
2208
+ Custom = "Custom"
2199
2209
  }
2200
2210
  /**
2201
- * How a live stream's init manifest is delivered and which binders it declares. A stream
2202
- * returns its signed init segment as bytes, so there is no output to name.
2211
+ * Where one assertion's values come from.
2203
2212
  */
2204
- export declare const StreamDelivery: Readonly<{
2205
- instanceOf: (obj: any) => obj is StreamDelivery;
2206
- Embedded: {
2213
+ export declare const SoftBindingSource: Readonly<{
2214
+ instanceOf: (obj: any) => obj is SoftBindingSource;
2215
+ Builtin: {
2207
2216
  new (inner: {
2208
- binders: Array<Binder>;
2217
+ alg: string;
2209
2218
  }): {
2210
2219
  /**
2211
2220
  * @private
2212
2221
  * This field is private and should not be used, use `tag` instead.
2213
2222
  */
2214
- readonly [uniffiTypeNameSymbol]: "StreamDelivery";
2215
- readonly tag: StreamDelivery_Tags.Embedded;
2223
+ readonly [uniffiTypeNameSymbol]: "SoftBindingSource";
2224
+ readonly tag: SoftBindingSource_Tags.Builtin;
2216
2225
  readonly inner: Readonly<{
2217
- binders: Array<Binder>;
2226
+ alg: string;
2218
2227
  }>;
2219
2228
  };
2220
2229
  "new"(inner: {
2221
- binders: Array<Binder>;
2230
+ alg: string;
2222
2231
  }): {
2223
2232
  /**
2224
2233
  * @private
2225
2234
  * This field is private and should not be used, use `tag` instead.
2226
2235
  */
2227
- readonly [uniffiTypeNameSymbol]: "StreamDelivery";
2228
- readonly tag: StreamDelivery_Tags.Embedded;
2236
+ readonly [uniffiTypeNameSymbol]: "SoftBindingSource";
2237
+ readonly tag: SoftBindingSource_Tags.Builtin;
2229
2238
  readonly inner: Readonly<{
2230
- binders: Array<Binder>;
2239
+ alg: string;
2231
2240
  }>;
2232
2241
  };
2233
2242
  instanceOf(obj: any): obj is {
@@ -2235,38 +2244,38 @@ export declare const StreamDelivery: Readonly<{
2235
2244
  * @private
2236
2245
  * This field is private and should not be used, use `tag` instead.
2237
2246
  */
2238
- readonly [uniffiTypeNameSymbol]: "StreamDelivery";
2239
- readonly tag: StreamDelivery_Tags.Embedded;
2247
+ readonly [uniffiTypeNameSymbol]: "SoftBindingSource";
2248
+ readonly tag: SoftBindingSource_Tags.Builtin;
2240
2249
  readonly inner: Readonly<{
2241
- binders: Array<Binder>;
2250
+ alg: string;
2242
2251
  }>;
2243
2252
  };
2244
2253
  };
2245
- Remote: {
2254
+ Held: {
2246
2255
  new (inner: {
2247
- binders: Array<Binder>;
2256
+ binding: SoftBinding;
2248
2257
  }): {
2249
2258
  /**
2250
2259
  * @private
2251
2260
  * This field is private and should not be used, use `tag` instead.
2252
2261
  */
2253
- readonly [uniffiTypeNameSymbol]: "StreamDelivery";
2254
- readonly tag: StreamDelivery_Tags.Remote;
2262
+ readonly [uniffiTypeNameSymbol]: "SoftBindingSource";
2263
+ readonly tag: SoftBindingSource_Tags.Held;
2255
2264
  readonly inner: Readonly<{
2256
- binders: Array<Binder>;
2265
+ binding: SoftBinding;
2257
2266
  }>;
2258
2267
  };
2259
2268
  "new"(inner: {
2260
- binders: Array<Binder>;
2269
+ binding: SoftBinding;
2261
2270
  }): {
2262
2271
  /**
2263
2272
  * @private
2264
2273
  * This field is private and should not be used, use `tag` instead.
2265
2274
  */
2266
- readonly [uniffiTypeNameSymbol]: "StreamDelivery";
2267
- readonly tag: StreamDelivery_Tags.Remote;
2275
+ readonly [uniffiTypeNameSymbol]: "SoftBindingSource";
2276
+ readonly tag: SoftBindingSource_Tags.Held;
2268
2277
  readonly inner: Readonly<{
2269
- binders: Array<Binder>;
2278
+ binding: SoftBinding;
2270
2279
  }>;
2271
2280
  };
2272
2281
  instanceOf(obj: any): obj is {
@@ -2274,38 +2283,38 @@ export declare const StreamDelivery: Readonly<{
2274
2283
  * @private
2275
2284
  * This field is private and should not be used, use `tag` instead.
2276
2285
  */
2277
- readonly [uniffiTypeNameSymbol]: "StreamDelivery";
2278
- readonly tag: StreamDelivery_Tags.Remote;
2286
+ readonly [uniffiTypeNameSymbol]: "SoftBindingSource";
2287
+ readonly tag: SoftBindingSource_Tags.Held;
2279
2288
  readonly inner: Readonly<{
2280
- binders: Array<Binder>;
2289
+ binding: SoftBinding;
2281
2290
  }>;
2282
2291
  };
2283
2292
  };
2284
- Both: {
2293
+ Custom: {
2285
2294
  new (inner: {
2286
- binders: Array<Binder>;
2295
+ compute: Compute;
2287
2296
  }): {
2288
2297
  /**
2289
2298
  * @private
2290
2299
  * This field is private and should not be used, use `tag` instead.
2291
2300
  */
2292
- readonly [uniffiTypeNameSymbol]: "StreamDelivery";
2293
- readonly tag: StreamDelivery_Tags.Both;
2301
+ readonly [uniffiTypeNameSymbol]: "SoftBindingSource";
2302
+ readonly tag: SoftBindingSource_Tags.Custom;
2294
2303
  readonly inner: Readonly<{
2295
- binders: Array<Binder>;
2304
+ compute: Compute;
2296
2305
  }>;
2297
2306
  };
2298
2307
  "new"(inner: {
2299
- binders: Array<Binder>;
2308
+ compute: Compute;
2300
2309
  }): {
2301
2310
  /**
2302
2311
  * @private
2303
2312
  * This field is private and should not be used, use `tag` instead.
2304
2313
  */
2305
- readonly [uniffiTypeNameSymbol]: "StreamDelivery";
2306
- readonly tag: StreamDelivery_Tags.Both;
2314
+ readonly [uniffiTypeNameSymbol]: "SoftBindingSource";
2315
+ readonly tag: SoftBindingSource_Tags.Custom;
2307
2316
  readonly inner: Readonly<{
2308
- binders: Array<Binder>;
2317
+ compute: Compute;
2309
2318
  }>;
2310
2319
  };
2311
2320
  instanceOf(obj: any): obj is {
@@ -2313,63 +2322,42 @@ export declare const StreamDelivery: Readonly<{
2313
2322
  * @private
2314
2323
  * This field is private and should not be used, use `tag` instead.
2315
2324
  */
2316
- readonly [uniffiTypeNameSymbol]: "StreamDelivery";
2317
- readonly tag: StreamDelivery_Tags.Both;
2325
+ readonly [uniffiTypeNameSymbol]: "SoftBindingSource";
2326
+ readonly tag: SoftBindingSource_Tags.Custom;
2318
2327
  readonly inner: Readonly<{
2319
- binders: Array<Binder>;
2328
+ compute: Compute;
2320
2329
  }>;
2321
2330
  };
2322
2331
  };
2323
2332
  }>;
2324
2333
  /**
2325
- * How a live stream's init manifest is delivered and which binders it declares. A stream
2326
- * returns its signed init segment as bytes, so there is no output to name.
2334
+ * Where one assertion's values come from.
2327
2335
  */
2328
- export type StreamDelivery = InstanceType<typeof StreamDelivery['Embedded' | 'Remote' | 'Both']>;
2329
- /**
2330
- * `validity_period_secs` is the session-key validity window in seconds
2331
- * after `created_at`; the verifier rejects segments signed past this
2332
- * (plus skew tolerance).
2333
- *
2334
- * `refresh_percent` is 0..=100; once this percentage of
2335
- * `validity_period_secs` elapses, `sign` returns `rotation_due: true`
2336
- * so the consumer can rotate before verifier-side expiry.
2337
- */
2338
- export type RotationPolicy = {
2339
- validityPeriodSecs: number;
2340
- refreshPercent: number;
2341
- };
2342
- /**
2343
- * Generated factory for {@link RotationPolicy} record objects.
2344
- */
2345
- export declare const RotationPolicy: Readonly<{
2346
- create: (partial: Partial<RotationPolicy> & Required<Omit<RotationPolicy, never>>) => RotationPolicy;
2347
- new: (partial: Partial<RotationPolicy> & Required<Omit<RotationPolicy, never>>) => RotationPolicy;
2348
- defaults: () => Partial<RotationPolicy>;
2349
- }>;
2336
+ export type SoftBindingSource = InstanceType<typeof SoftBindingSource['Builtin' | 'Held' | 'Custom']>;
2350
2337
  /**
2351
- * Options for a stream's `init` and `rotate`: where the init manifest lives and the binders
2352
- * run over the init segment for it, and the session-key validity window.
2338
+ * Options for a stream's `init` and `rotate`: where the init manifest lives, the session-key
2339
+ * validity window, and the soft bindings declared for the init segment.
2353
2340
  */
2354
2341
  export type InitOptions = {
2355
2342
  delivery: StreamDelivery;
2356
2343
  rotationPolicy: RotationPolicy;
2344
+ softBindings: Array<SoftBindingSource>;
2357
2345
  };
2358
2346
  /**
2359
2347
  * Generated factory for {@link InitOptions} record objects.
2360
2348
  */
2361
2349
  export declare const InitOptions: Readonly<{
2362
- create: (partial: Partial<InitOptions> & Required<Omit<InitOptions, never>>) => InitOptions;
2363
- new: (partial: Partial<InitOptions> & Required<Omit<InitOptions, never>>) => InitOptions;
2350
+ create: (partial: Partial<InitOptions> & Required<Omit<InitOptions, "softBindings">>) => InitOptions;
2351
+ new: (partial: Partial<InitOptions> & Required<Omit<InitOptions, "softBindings">>) => InitOptions;
2364
2352
  defaults: () => Partial<InitOptions>;
2365
2353
  }>;
2366
2354
  /**
2367
- * Result of [`StreamIssuer::init`](super::StreamIssuer::init). `valid_until_epoch_secs` is the
2368
- * UNIX-epoch second at which the session key's validity elapses.
2355
+ * Result of [`StreamIssuer::init`](super::StreamIssuer::init): the signed init segment, and when
2356
+ * its session key stops signing.
2369
2357
  */
2370
2358
  export type InitOutcome = {
2371
- signedInitBytes: ArrayBuffer;
2372
- validUntilEpochSecs: bigint;
2359
+ bytes: ArrayBuffer;
2360
+ validUntil: Date;
2373
2361
  };
2374
2362
  /**
2375
2363
  * Generated factory for {@link InitOutcome} record objects.
@@ -2380,52 +2368,39 @@ export declare const InitOutcome: Readonly<{
2380
2368
  defaults: () => Partial<InitOutcome>;
2381
2369
  }>;
2382
2370
  /**
2383
- * Everything one [`AssetMarker::mark`] needs beyond the asset, every field stated.
2371
+ * What one [`AssetMarker::mark`] is told beyond the asset.
2384
2372
  */
2385
2373
  export type MarkOptions = {
2386
2374
  /**
2387
- * How the asset's format is known.
2375
+ * The asset's media type; `None` reads it from the leading bytes.
2388
2376
  */
2389
- format: AssetFormat;
2377
+ format?: string;
2390
2378
  /**
2391
- * Filename recorded with the mark, and the multipart part name.
2379
+ * The watermarks to insert, as algorithm list labels; `[]` inserts every one the
2380
+ * deployment offers, in its order.
2392
2381
  */
2393
- fileName: string;
2394
- /**
2395
- * Whether the signposting layer is applied beside the marks that resolve back to the
2396
- * manifest; `false` applies only those.
2397
- */
2398
- signpost: boolean;
2382
+ algorithms: Array<string>;
2399
2383
  };
2400
2384
  /**
2401
2385
  * Generated factory for {@link MarkOptions} record objects.
2402
2386
  */
2403
2387
  export declare const MarkOptions: Readonly<{
2404
- create: (partial: Partial<MarkOptions> & Required<Omit<MarkOptions, never>>) => MarkOptions;
2405
- new: (partial: Partial<MarkOptions> & Required<Omit<MarkOptions, never>>) => MarkOptions;
2388
+ create: (partial: Partial<MarkOptions> & Required<Omit<MarkOptions, "algorithms" | "format">>) => MarkOptions;
2389
+ new: (partial: Partial<MarkOptions> & Required<Omit<MarkOptions, "algorithms" | "format">>) => MarkOptions;
2406
2390
  defaults: () => Partial<MarkOptions>;
2407
2391
  }>;
2408
2392
  /**
2409
- * Result of [`AssetMarker::mark`](super::AssetMarker::mark): the marked asset and the provenance
2410
- * its marking created. The neutral core is [`marker::MarkOutcome`]; this differs only in carrying the
2411
- * asset as [`Bytes`].
2393
+ * Result of [`AssetMarker::mark`](super::AssetMarker::mark), whose marked asset went into its
2394
+ * sink.
2412
2395
  */
2413
2396
  export type MarkOutcome = {
2414
2397
  /**
2415
- * The marked asset. Sign these bytes, not the ones handed in.
2416
- */
2417
- bytes: ArrayBuffer;
2418
- /**
2419
- * The marked asset's media type, which a marker may change by re-encoding.
2398
+ * The marked asset's media type, which a watermark service may change by re-encoding.
2420
2399
  */
2421
2400
  format: string;
2422
2401
  /**
2423
- * The name the marking service recorded.
2424
- */
2425
- fileName: string;
2426
- /**
2427
- * One `c2pa.watermarked.bound` or `.unbound` per mark, in the order applied, a bound one
2428
- * carrying the binding it resolves through. Append to the manifest's `actions`.
2402
+ * One `c2pa.watermarked.bound` or `.unbound` per mark, in the order inserted. Append them to
2403
+ * the manifest's `actions`.
2429
2404
  */
2430
2405
  actions: Array<Action>;
2431
2406
  };
@@ -2438,32 +2413,28 @@ export declare const MarkOutcome: Readonly<{
2438
2413
  defaults: () => Partial<MarkOutcome>;
2439
2414
  }>;
2440
2415
  /**
2441
- * A byte range holding a bare C2PA manifest store, or reserved for one. A record of
2442
- * primitives, so a plugin in its OWN UniFFI namespace declares a structurally identical
2443
- * one and the two cross the boundary without sharing a Rust type.
2416
+ * What a [`SigningVault::mint`] is asked: how long the key will be signed under, so the vault can
2417
+ * give it that lifetime and expire it itself; a key no `forget` reaches then dies where it is held.
2444
2418
  */
2445
- export type Region = {
2446
- offset: bigint;
2447
- length: bigint;
2419
+ export type MintRequest = {
2420
+ validityPeriod: number;
2448
2421
  };
2449
2422
  /**
2450
- * Generated factory for {@link Region} record objects.
2423
+ * Generated factory for {@link MintRequest} record objects.
2451
2424
  */
2452
- export declare const Region: Readonly<{
2453
- create: (partial: Partial<Region> & Required<Omit<Region, never>>) => Region;
2454
- new: (partial: Partial<Region> & Required<Omit<Region, never>>) => Region;
2455
- defaults: () => Partial<Region>;
2425
+ export declare const MintRequest: Readonly<{
2426
+ create: (partial: Partial<MintRequest> & Required<Omit<MintRequest, never>>) => MintRequest;
2427
+ new: (partial: Partial<MintRequest> & Required<Omit<MintRequest, never>>) => MintRequest;
2428
+ defaults: () => Partial<MintRequest>;
2456
2429
  }>;
2457
2430
  /**
2458
- * Result of [`StreamSession::sign`](super::StreamSession::sign). `rotation_due` flips once
2459
- * `policy.refresh_percent`% of validity has elapsed; `valid_until_epoch_secs` is repeated
2460
- * per segment so callers can schedule rotation precisely instead of reacting only to the
2461
- * flag.
2431
+ * Result of [`StreamSession::sign`](super::StreamSession::sign). `valid_until` repeats per
2432
+ * segment so a caller can schedule the rotation rather than only react to `rotation_due`.
2462
2433
  */
2463
2434
  export type SegmentOutcome = {
2464
2435
  bytes: ArrayBuffer;
2465
2436
  rotationDue: boolean;
2466
- validUntilEpochSecs: bigint;
2437
+ validUntil: Date;
2467
2438
  };
2468
2439
  /**
2469
2440
  * Generated factory for {@link SegmentOutcome} record objects.
@@ -2473,6 +2444,23 @@ export declare const SegmentOutcome: Readonly<{
2473
2444
  new: (partial: Partial<SegmentOutcome> & Required<Omit<SegmentOutcome, never>>) => SegmentOutcome;
2474
2445
  defaults: () => Partial<SegmentOutcome>;
2475
2446
  }>;
2447
+ /**
2448
+ * A minted session key's public half. `kid` is the vault's handle for it (typically SHA-256 of
2449
+ * the public key); `public_key` is the uncompressed SEC1 point (65 bytes from `0x04` for ES256),
2450
+ * which the SDK wraps as a `COSE_Key` (C2PA 2.4 19.4.4).
2451
+ */
2452
+ export type SessionKey = {
2453
+ kid: ArrayBuffer;
2454
+ publicKey: ArrayBuffer;
2455
+ };
2456
+ /**
2457
+ * Generated factory for {@link SessionKey} record objects.
2458
+ */
2459
+ export declare const SessionKey: Readonly<{
2460
+ create: (partial: Partial<SessionKey> & Required<Omit<SessionKey, never>>) => SessionKey;
2461
+ new: (partial: Partial<SessionKey> & Required<Omit<SessionKey, never>>) => SessionKey;
2462
+ defaults: () => Partial<SessionKey>;
2463
+ }>;
2476
2464
  /**
2477
2465
  * A ranged read+write backend for embedding. All four methods are first-class (UniFFI
2478
2466
  * has no trait inheritance for foreign callbacks, so the read half is duplicated from
@@ -2534,10 +2522,9 @@ export declare enum SignOutput_Tags {
2534
2522
  Asset = "Asset"
2535
2523
  }
2536
2524
  /**
2537
- * What a `sign` hands back beyond the sidecar it always returns: the sidecar alone, or the
2538
- * signed asset written through `into` in the same call. See the core
2539
- * [`SignOutput`](crate::manifest::spec::SignOutput) for what pointing `into` at the asset's own
2540
- * storage means.
2525
+ * What a `sign` hands back beyond the sidecar it always returns: the sidecar alone, or the whole
2526
+ * signed asset written into `into` in the same call, replacing what it held. See the core
2527
+ * [`SignOutput`](core::SignOutput) for what pointing `into` at the asset's own storage means.
2541
2528
  */
2542
2529
  export declare const SignOutput: Readonly<{
2543
2530
  instanceOf: (obj: any) => obj is SignOutput;
@@ -2608,30 +2595,27 @@ export declare const SignOutput: Readonly<{
2608
2595
  };
2609
2596
  }>;
2610
2597
  /**
2611
- * What a `sign` hands back beyond the sidecar it always returns: the sidecar alone, or the
2612
- * signed asset written through `into` in the same call. See the core
2613
- * [`SignOutput`](crate::manifest::spec::SignOutput) for what pointing `into` at the asset's own
2614
- * storage means.
2598
+ * What a `sign` hands back beyond the sidecar it always returns: the sidecar alone, or the whole
2599
+ * signed asset written into `into` in the same call, replacing what it held. See the core
2600
+ * [`SignOutput`](core::SignOutput) for what pointing `into` at the asset's own storage means.
2615
2601
  */
2616
2602
  export type SignOutput = InstanceType<typeof SignOutput['Sidecar' | 'Asset']>;
2617
2603
  export declare enum AssetDelivery_Tags {
2618
2604
  Embedded = "Embedded",
2619
2605
  Remote = "Remote",
2620
- Both = "Both"
2606
+ EmbeddedAndRemote = "EmbeddedAndRemote"
2621
2607
  }
2622
2608
  /**
2623
- * How a static asset's manifest is delivered, which binders it declares, and what comes back.
2609
+ * Where a static asset's manifest lives and, when it is in the asset, what comes back.
2624
2610
  *
2625
- * Embedded manifests may still need bindings, for example to describe a bound watermark, but
2626
- * are not indexed. Remote needs at least one resolved binding, from a binder or a bound
2627
- * watermark action, and never touches the asset, so it names no output; both is recoverable
2628
- * through its embedded manifest and permits an empty strategy list.
2611
+ * Embedded manifests are not indexed, so a watermark on one is refused: it could never lead back
2612
+ * to the manifest. Remote needs a soft binding the deployment resolves and never touches the
2613
+ * asset, so it names no output.
2629
2614
  */
2630
2615
  export declare const AssetDelivery: Readonly<{
2631
2616
  instanceOf: (obj: any) => obj is AssetDelivery;
2632
2617
  Embedded: {
2633
2618
  new (inner: {
2634
- binders: Array<Binder>;
2635
2619
  output: SignOutput;
2636
2620
  }): {
2637
2621
  /**
@@ -2641,12 +2625,10 @@ export declare const AssetDelivery: Readonly<{
2641
2625
  readonly [uniffiTypeNameSymbol]: "AssetDelivery";
2642
2626
  readonly tag: AssetDelivery_Tags.Embedded;
2643
2627
  readonly inner: Readonly<{
2644
- binders: Array<Binder>;
2645
2628
  output: SignOutput;
2646
2629
  }>;
2647
2630
  };
2648
2631
  "new"(inner: {
2649
- binders: Array<Binder>;
2650
2632
  output: SignOutput;
2651
2633
  }): {
2652
2634
  /**
@@ -2656,7 +2638,6 @@ export declare const AssetDelivery: Readonly<{
2656
2638
  readonly [uniffiTypeNameSymbol]: "AssetDelivery";
2657
2639
  readonly tag: AssetDelivery_Tags.Embedded;
2658
2640
  readonly inner: Readonly<{
2659
- binders: Array<Binder>;
2660
2641
  output: SignOutput;
2661
2642
  }>;
2662
2643
  };
@@ -2668,37 +2649,26 @@ export declare const AssetDelivery: Readonly<{
2668
2649
  readonly [uniffiTypeNameSymbol]: "AssetDelivery";
2669
2650
  readonly tag: AssetDelivery_Tags.Embedded;
2670
2651
  readonly inner: Readonly<{
2671
- binders: Array<Binder>;
2672
2652
  output: SignOutput;
2673
2653
  }>;
2674
2654
  };
2675
2655
  };
2676
2656
  Remote: {
2677
- new (inner: {
2678
- binders: Array<Binder>;
2679
- }): {
2657
+ new (): {
2680
2658
  /**
2681
2659
  * @private
2682
2660
  * This field is private and should not be used, use `tag` instead.
2683
2661
  */
2684
2662
  readonly [uniffiTypeNameSymbol]: "AssetDelivery";
2685
2663
  readonly tag: AssetDelivery_Tags.Remote;
2686
- readonly inner: Readonly<{
2687
- binders: Array<Binder>;
2688
- }>;
2689
2664
  };
2690
- "new"(inner: {
2691
- binders: Array<Binder>;
2692
- }): {
2665
+ "new"(): {
2693
2666
  /**
2694
2667
  * @private
2695
2668
  * This field is private and should not be used, use `tag` instead.
2696
2669
  */
2697
2670
  readonly [uniffiTypeNameSymbol]: "AssetDelivery";
2698
2671
  readonly tag: AssetDelivery_Tags.Remote;
2699
- readonly inner: Readonly<{
2700
- binders: Array<Binder>;
2701
- }>;
2702
2672
  };
2703
2673
  instanceOf(obj: any): obj is {
2704
2674
  /**
@@ -2707,14 +2677,10 @@ export declare const AssetDelivery: Readonly<{
2707
2677
  */
2708
2678
  readonly [uniffiTypeNameSymbol]: "AssetDelivery";
2709
2679
  readonly tag: AssetDelivery_Tags.Remote;
2710
- readonly inner: Readonly<{
2711
- binders: Array<Binder>;
2712
- }>;
2713
2680
  };
2714
2681
  };
2715
- Both: {
2682
+ EmbeddedAndRemote: {
2716
2683
  new (inner: {
2717
- binders: Array<Binder>;
2718
2684
  output: SignOutput;
2719
2685
  }): {
2720
2686
  /**
@@ -2722,14 +2688,12 @@ export declare const AssetDelivery: Readonly<{
2722
2688
  * This field is private and should not be used, use `tag` instead.
2723
2689
  */
2724
2690
  readonly [uniffiTypeNameSymbol]: "AssetDelivery";
2725
- readonly tag: AssetDelivery_Tags.Both;
2691
+ readonly tag: AssetDelivery_Tags.EmbeddedAndRemote;
2726
2692
  readonly inner: Readonly<{
2727
- binders: Array<Binder>;
2728
2693
  output: SignOutput;
2729
2694
  }>;
2730
2695
  };
2731
2696
  "new"(inner: {
2732
- binders: Array<Binder>;
2733
2697
  output: SignOutput;
2734
2698
  }): {
2735
2699
  /**
@@ -2737,9 +2701,8 @@ export declare const AssetDelivery: Readonly<{
2737
2701
  * This field is private and should not be used, use `tag` instead.
2738
2702
  */
2739
2703
  readonly [uniffiTypeNameSymbol]: "AssetDelivery";
2740
- readonly tag: AssetDelivery_Tags.Both;
2704
+ readonly tag: AssetDelivery_Tags.EmbeddedAndRemote;
2741
2705
  readonly inner: Readonly<{
2742
- binders: Array<Binder>;
2743
2706
  output: SignOutput;
2744
2707
  }>;
2745
2708
  };
@@ -2749,48 +2712,51 @@ export declare const AssetDelivery: Readonly<{
2749
2712
  * This field is private and should not be used, use `tag` instead.
2750
2713
  */
2751
2714
  readonly [uniffiTypeNameSymbol]: "AssetDelivery";
2752
- readonly tag: AssetDelivery_Tags.Both;
2715
+ readonly tag: AssetDelivery_Tags.EmbeddedAndRemote;
2753
2716
  readonly inner: Readonly<{
2754
- binders: Array<Binder>;
2755
2717
  output: SignOutput;
2756
2718
  }>;
2757
2719
  };
2758
2720
  };
2759
2721
  }>;
2760
2722
  /**
2761
- * How a static asset's manifest is delivered, which binders it declares, and what comes back.
2723
+ * Where a static asset's manifest lives and, when it is in the asset, what comes back.
2762
2724
  *
2763
- * Embedded manifests may still need bindings, for example to describe a bound watermark, but
2764
- * are not indexed. Remote needs at least one resolved binding, from a binder or a bound
2765
- * watermark action, and never touches the asset, so it names no output; both is recoverable
2766
- * through its embedded manifest and permits an empty strategy list.
2725
+ * Embedded manifests are not indexed, so a watermark on one is refused: it could never lead back
2726
+ * to the manifest. Remote needs a soft binding the deployment resolves and never touches the
2727
+ * asset, so it names no output.
2767
2728
  */
2768
- export type AssetDelivery = InstanceType<typeof AssetDelivery['Embedded' | 'Remote' | 'Both']>;
2729
+ export type AssetDelivery = InstanceType<typeof AssetDelivery['Embedded' | 'Remote' | 'EmbeddedAndRemote']>;
2769
2730
  /**
2770
- * Options for `sign`. The delivery owns where the manifest lives, its binders and what comes
2771
- * back; the format is how the asset's is known, stated or sniffed; the thumbnail is the claim
2772
- * thumbnail the caller rendered, since the split-signer never sees the asset.
2731
+ * What one `sign` is told beyond the asset, its manifest and the plugins.
2773
2732
  */
2774
2733
  export type SignOptions = {
2775
2734
  delivery: AssetDelivery;
2776
- format: AssetFormat;
2735
+ /**
2736
+ * The asset's media type; `None` reads it from the leading bytes.
2737
+ */
2738
+ format?: string;
2739
+ /**
2740
+ * The claim thumbnail, rendered by the caller: the split signer never sees the asset.
2741
+ */
2777
2742
  thumbnail?: Thumbnail;
2743
+ softBindings: Array<SoftBindingSource>;
2778
2744
  };
2779
2745
  /**
2780
2746
  * Generated factory for {@link SignOptions} record objects.
2781
2747
  */
2782
2748
  export declare const SignOptions: Readonly<{
2783
- create: (partial: Partial<SignOptions> & Required<Omit<SignOptions, "thumbnail">>) => SignOptions;
2784
- new: (partial: Partial<SignOptions> & Required<Omit<SignOptions, "thumbnail">>) => SignOptions;
2749
+ create: (partial: Partial<SignOptions> & Required<Omit<SignOptions, "format" | "softBindings" | "thumbnail">>) => SignOptions;
2750
+ new: (partial: Partial<SignOptions> & Required<Omit<SignOptions, "format" | "softBindings" | "thumbnail">>) => SignOptions;
2785
2751
  defaults: () => Partial<SignOptions>;
2786
2752
  }>;
2787
2753
  /**
2788
2754
  * Result of [`AssetIssuer::sign`](super::AssetIssuer::sign): the sidecar to embed plus its active
2789
- * C2PA manifest id. Remote and both modes persist that id; embedded mode does not.
2755
+ * C2PA manifest id. `Remote` and `EmbeddedAndRemote` persist that id; `Embedded` does not.
2790
2756
  */
2791
2757
  export type SignOutcome = {
2792
2758
  /**
2793
- * The manifest sidecar to embed into the asset (see [`embed`](crate::ffi::embed)).
2759
+ * The manifest sidecar to embed into the asset (see `embed`).
2794
2760
  */
2795
2761
  sidecar: ArrayBuffer;
2796
2762
  /**
@@ -2806,23 +2772,23 @@ export declare const SignOutcome: Readonly<{
2806
2772
  new: (partial: Partial<SignOutcome> & Required<Omit<SignOutcome, never>>) => SignOutcome;
2807
2773
  defaults: () => Partial<SignOutcome>;
2808
2774
  }>;
2809
- export declare enum Origin_Tags {
2775
+ export declare enum StreamOrigin_Tags {
2810
2776
  Created = "Created",
2811
2777
  Opened = "Opened"
2812
2778
  }
2813
2779
  /**
2814
- * An origin a live stream states; see the core [`provenance::Origin`].
2780
+ * An origin a stream states; see the core [`provenance::StreamOrigin`].
2815
2781
  */
2816
- export declare const Origin: Readonly<{
2817
- instanceOf: (obj: any) => obj is Origin;
2782
+ export declare const StreamOrigin: Readonly<{
2783
+ instanceOf: (obj: any) => obj is StreamOrigin;
2818
2784
  Created: {
2819
2785
  new (v0: CreatedOrigin): {
2820
2786
  /**
2821
2787
  * @private
2822
2788
  * This field is private and should not be used, use `tag` instead.
2823
2789
  */
2824
- readonly [uniffiTypeNameSymbol]: "Origin";
2825
- readonly tag: Origin_Tags.Created;
2790
+ readonly [uniffiTypeNameSymbol]: "StreamOrigin";
2791
+ readonly tag: StreamOrigin_Tags.Created;
2826
2792
  readonly inner: Readonly<[CreatedOrigin]>;
2827
2793
  };
2828
2794
  "new"(v0: CreatedOrigin): {
@@ -2830,8 +2796,8 @@ export declare const Origin: Readonly<{
2830
2796
  * @private
2831
2797
  * This field is private and should not be used, use `tag` instead.
2832
2798
  */
2833
- readonly [uniffiTypeNameSymbol]: "Origin";
2834
- readonly tag: Origin_Tags.Created;
2799
+ readonly [uniffiTypeNameSymbol]: "StreamOrigin";
2800
+ readonly tag: StreamOrigin_Tags.Created;
2835
2801
  readonly inner: Readonly<[CreatedOrigin]>;
2836
2802
  };
2837
2803
  instanceOf(obj: any): obj is {
@@ -2839,8 +2805,8 @@ export declare const Origin: Readonly<{
2839
2805
  * @private
2840
2806
  * This field is private and should not be used, use `tag` instead.
2841
2807
  */
2842
- readonly [uniffiTypeNameSymbol]: "Origin";
2843
- readonly tag: Origin_Tags.Created;
2808
+ readonly [uniffiTypeNameSymbol]: "StreamOrigin";
2809
+ readonly tag: StreamOrigin_Tags.Created;
2844
2810
  readonly inner: Readonly<[CreatedOrigin]>;
2845
2811
  };
2846
2812
  };
@@ -2850,8 +2816,8 @@ export declare const Origin: Readonly<{
2850
2816
  * @private
2851
2817
  * This field is private and should not be used, use `tag` instead.
2852
2818
  */
2853
- readonly [uniffiTypeNameSymbol]: "Origin";
2854
- readonly tag: Origin_Tags.Opened;
2819
+ readonly [uniffiTypeNameSymbol]: "StreamOrigin";
2820
+ readonly tag: StreamOrigin_Tags.Opened;
2855
2821
  readonly inner: Readonly<[OpenedOrigin]>;
2856
2822
  };
2857
2823
  "new"(v0: OpenedOrigin): {
@@ -2859,8 +2825,8 @@ export declare const Origin: Readonly<{
2859
2825
  * @private
2860
2826
  * This field is private and should not be used, use `tag` instead.
2861
2827
  */
2862
- readonly [uniffiTypeNameSymbol]: "Origin";
2863
- readonly tag: Origin_Tags.Opened;
2828
+ readonly [uniffiTypeNameSymbol]: "StreamOrigin";
2829
+ readonly tag: StreamOrigin_Tags.Opened;
2864
2830
  readonly inner: Readonly<[OpenedOrigin]>;
2865
2831
  };
2866
2832
  instanceOf(obj: any): obj is {
@@ -2868,62 +2834,73 @@ export declare const Origin: Readonly<{
2868
2834
  * @private
2869
2835
  * This field is private and should not be used, use `tag` instead.
2870
2836
  */
2871
- readonly [uniffiTypeNameSymbol]: "Origin";
2872
- readonly tag: Origin_Tags.Opened;
2837
+ readonly [uniffiTypeNameSymbol]: "StreamOrigin";
2838
+ readonly tag: StreamOrigin_Tags.Opened;
2873
2839
  readonly inner: Readonly<[OpenedOrigin]>;
2874
2840
  };
2875
2841
  };
2876
2842
  }>;
2877
2843
  /**
2878
- * An origin a live stream states; see the core [`provenance::Origin`].
2844
+ * An origin a stream states; see the core [`provenance::StreamOrigin`].
2879
2845
  */
2880
- export type Origin = InstanceType<typeof Origin['Created' | 'Opened']>;
2846
+ export type StreamOrigin = InstanceType<typeof StreamOrigin['Created' | 'Opened']>;
2881
2847
  /**
2882
- * The manifest a live stream's init segment is signed with: the asset spec's twin whose origin
2883
- * is an [`Origin`], since an init segment has no store the SDK opens as the parent.
2848
+ * The manifest a stream's init segment is signed with: the asset spec's twin whose origin is a
2849
+ * [`StreamOrigin`], since an init segment has no store the SDK opens as the parent.
2884
2850
  */
2885
2851
  export type StreamManifestSpec = {
2886
2852
  title?: string;
2887
- origin: Origin;
2853
+ origin: StreamOrigin;
2854
+ /**
2855
+ * Every action performed on the asset; the manifest states the list is complete (C2PA
2856
+ * `allActionsIncluded`).
2857
+ */
2888
2858
  actions: Array<Action>;
2889
2859
  identity?: Identity;
2890
2860
  assertions: Array<Assertion>;
2891
- components: Array<Component>;
2861
+ /**
2862
+ * Keyed by the handle actions name them by.
2863
+ */
2864
+ components: Map<string, Component>;
2892
2865
  };
2893
2866
  /**
2894
2867
  * Generated factory for {@link StreamManifestSpec} record objects.
2895
2868
  */
2896
2869
  export declare const StreamManifestSpec: Readonly<{
2897
- create: (partial: Partial<StreamManifestSpec> & Required<Omit<StreamManifestSpec, "identity" | "title">>) => StreamManifestSpec;
2898
- new: (partial: Partial<StreamManifestSpec> & Required<Omit<StreamManifestSpec, "identity" | "title">>) => StreamManifestSpec;
2870
+ create: (partial: Partial<StreamManifestSpec> & Required<Omit<StreamManifestSpec, "actions" | "assertions" | "components" | "identity" | "title">>) => StreamManifestSpec;
2871
+ new: (partial: Partial<StreamManifestSpec> & Required<Omit<StreamManifestSpec, "actions" | "assertions" | "components" | "identity" | "title">>) => StreamManifestSpec;
2899
2872
  defaults: () => Partial<StreamManifestSpec>;
2900
2873
  }>;
2901
2874
  /**
2902
- * One live stream, from `init` to `stop`.
2875
+ * One stream, from `init` to `stop` or `rotate`.
2903
2876
  *
2904
- * Carries the whole per-stream state, so it cannot be mistyped, reused after `stop`, or
2905
- * confused with another stream's: every call after `init` goes through the handle that started
2906
- * it, and nothing about the stream ever appears in a caller's argument list again.
2877
+ * Carries the whole per-stream state, so it cannot be mistyped or confused with another
2878
+ * stream's: every call after `init` goes through the handle that started it, and nothing about
2879
+ * the stream ever appears in a caller's argument list again. Once `stop` or a `rotate` succeeds
2880
+ * it refuses every call.
2907
2881
  */
2908
2882
  export interface StreamSessionLike {
2909
2883
  /**
2910
2884
  * Sign one media (moof) segment from a [`RangeSource`]. Does not touch the signer channel;
2911
2885
  * works through a signer outage. `rotation_due` flips when the key validity threshold
2912
- * passes; re-`init` on the issuer to rotate.
2886
+ * passes; then call `StreamIssuer.rotate` with this session.
2913
2887
  *
2914
2888
  * # Errors
2915
2889
  *
2916
- * Fails on a vault error, or a segment that isn't a BMFF media segment.
2890
+ * Fails on a vault error, a segment that isn't a BMFF media segment, or with
2891
+ * `FAILED_PRECONDITION` (`SESSION_ENDED`) after `stop` or a `rotate`.
2917
2892
  */
2918
- sign(body: RangeSource, asyncOpts_?: {
2893
+ sign(source: RangeSource, asyncOpts_?: {
2919
2894
  signal: AbortSignal;
2920
2895
  }): Promise<SegmentOutcome>;
2921
2896
  /**
2922
- * End the stream: forget its session key, so nothing can sign under it again.
2897
+ * End the stream: forget its session key, so nothing can sign under it again. Idempotent:
2898
+ * stopping an ended session succeeds. A failed stop can be retried.
2923
2899
  *
2924
2900
  * # Errors
2925
2901
  *
2926
- * Fails on a vault error.
2902
+ * Fails on a vault error, or with `FAILED_PRECONDITION` (`SESSION_ENDED`) with another
2903
+ * `stop` or `rotate` in flight.
2927
2904
  */
2928
2905
  stop(asyncOpts_?: {
2929
2906
  signal: AbortSignal;
@@ -2934,11 +2911,12 @@ export interface StreamSessionLike {
2934
2911
  */
2935
2912
  export type StreamSessionInterface = StreamSessionLike;
2936
2913
  /**
2937
- * One live stream, from `init` to `stop`.
2914
+ * One stream, from `init` to `stop` or `rotate`.
2938
2915
  *
2939
- * Carries the whole per-stream state, so it cannot be mistyped, reused after `stop`, or
2940
- * confused with another stream's: every call after `init` goes through the handle that started
2941
- * it, and nothing about the stream ever appears in a caller's argument list again.
2916
+ * Carries the whole per-stream state, so it cannot be mistyped or confused with another
2917
+ * stream's: every call after `init` goes through the handle that started it, and nothing about
2918
+ * the stream ever appears in a caller's argument list again. Once `stop` or a `rotate` succeeds
2919
+ * it refuses every call.
2942
2920
  */
2943
2921
  export declare class StreamSession extends UniffiAbstractObject implements StreamSessionLike {
2944
2922
  readonly [uniffiTypeNameSymbol] = "StreamSession";
@@ -2948,21 +2926,24 @@ export declare class StreamSession extends UniffiAbstractObject implements Strea
2948
2926
  /**
2949
2927
  * Sign one media (moof) segment from a [`RangeSource`]. Does not touch the signer channel;
2950
2928
  * works through a signer outage. `rotation_due` flips when the key validity threshold
2951
- * passes; re-`init` on the issuer to rotate.
2929
+ * passes; then call `StreamIssuer.rotate` with this session.
2952
2930
  *
2953
2931
  * # Errors
2954
2932
  *
2955
- * Fails on a vault error, or a segment that isn't a BMFF media segment.
2933
+ * Fails on a vault error, a segment that isn't a BMFF media segment, or with
2934
+ * `FAILED_PRECONDITION` (`SESSION_ENDED`) after `stop` or a `rotate`.
2956
2935
  */
2957
- sign(body: RangeSource, asyncOpts_?: {
2936
+ sign(source: RangeSource, asyncOpts_?: {
2958
2937
  signal: AbortSignal;
2959
2938
  }): Promise<SegmentOutcome>;
2960
2939
  /**
2961
- * End the stream: forget its session key, so nothing can sign under it again.
2940
+ * End the stream: forget its session key, so nothing can sign under it again. Idempotent:
2941
+ * stopping an ended session succeeds. A failed stop can be retried.
2962
2942
  *
2963
2943
  * # Errors
2964
2944
  *
2965
- * Fails on a vault error.
2945
+ * Fails on a vault error, or with `FAILED_PRECONDITION` (`SESSION_ENDED`) with another
2946
+ * `stop` or `rotate` in flight.
2966
2947
  */
2967
2948
  stop(asyncOpts_?: {
2968
2949
  signal: AbortSignal;
@@ -2993,25 +2974,8 @@ export declare const StreamStart: Readonly<{
2993
2974
  defaults: () => Partial<StreamStart>;
2994
2975
  }>;
2995
2976
  /**
2996
- * `kid` is the vault-derived handle (typically SHA-256 of SEC1 public).
2997
- * `public_key_sec1` is uncompressed SEC1 (65 bytes starting with `0x04`
2998
- * for ES256); the SDK rewraps as `COSE_Key` for §19.4.4.
2999
- */
3000
- export type VaultPublicKey = {
3001
- kid: ArrayBuffer;
3002
- publicKeySec1: ArrayBuffer;
3003
- };
3004
- /**
3005
- * Generated factory for {@link VaultPublicKey} record objects.
3006
- */
3007
- export declare const VaultPublicKey: Readonly<{
3008
- create: (partial: Partial<VaultPublicKey> & Required<Omit<VaultPublicKey, never>>) => VaultPublicKey;
3009
- new: (partial: Partial<VaultPublicKey> & Required<Omit<VaultPublicKey, never>>) => VaultPublicKey;
3010
- defaults: () => Partial<VaultPublicKey>;
3011
- }>;
3012
- /**
3013
- * Whether a fragmented-MP4 segment is the init (moov) or a media (moof) segment: which
3014
- * [`StreamIssuer`](stream::StreamIssuer) entrypoint (`init` vs `sign`) a segment belongs to.
2977
+ * Whether a fragmented-MP4 segment is the init (moov) or a media (moof) segment: whether it goes
2978
+ * to `StreamIssuer.init` or `StreamSession.sign`.
3015
2979
  */
3016
2980
  export declare enum SegmentKind {
3017
2981
  Init = 0,
@@ -3034,25 +2998,25 @@ export interface PluginAuthor {
3034
2998
  * Implement it correctly anyway, since the verify side dispatches on it and whatever
3035
2999
  * signs a format is eventually verified by it.
3036
3000
  */
3037
- sniff(src: RangeSource, asyncOpts_?: {
3001
+ sniff(source: RangeSource, asyncOpts_?: {
3038
3002
  signal: AbortSignal;
3039
3003
  }): Promise<string | undefined>;
3040
3004
  /**
3041
3005
  * The manifest window(s), or empty when none is present. MUST be byte-identical
3042
3006
  * regardless of slot contents; the sign driver enforces that with a round-trip.
3043
3007
  */
3044
- locate(src: RangeSource, asyncOpts_?: {
3008
+ locate(source: RangeSource, asyncOpts_?: {
3045
3009
  signal: AbortSignal;
3046
- }): Promise<Array<Region>>;
3010
+ }): Promise<Array<ByteRange>>;
3047
3011
  /**
3048
3012
  * Reserve `reserve` bytes of manifest slot by writing container structure through
3049
- * `dst`, and return exactly where it landed. The core excludes those regions from the
3013
+ * `sink`, and return exactly where it landed. The core excludes those regions from the
3050
3014
  * content hash and writes the signed manifest into them, so the plugin never embeds
3051
3015
  * and never re-locates.
3052
3016
  */
3053
- reserveSlot(dst: RangeSink, reserve: bigint, asyncOpts_?: {
3017
+ reserveSlot(sink: RangeSink, reserve: bigint, asyncOpts_?: {
3054
3018
  signal: AbortSignal;
3055
- }): Promise<Array<Region>>;
3019
+ }): Promise<Array<ByteRange>>;
3056
3020
  }
3057
3021
  /**
3058
3022
  * A C2PA asset signer bound to a [`SignerClient`](super::client::SignerClient).
@@ -3060,16 +3024,14 @@ export interface PluginAuthor {
3060
3024
  */
3061
3025
  export interface AssetIssuerLike {
3062
3026
  /**
3063
- * Sign an asset from a [`RangeSource`], returning the sidecar plus the registry
3064
- * `manifest_id`. `options.delivery` selects where the manifest lives, its binders and,
3065
- * through its output, the sink the signed asset is written through. `options.format` is
3066
- * how the asset's format is known. `plugins` resolves a non-c2pa format (e.g. MXF); see the
3067
- * module docs for the dispatch.
3027
+ * Sign an asset from a [`RangeSource`], returning the sidecar and the active manifest's id.
3028
+ * `options.delivery` says where the manifest lives and, through its output, where the signed
3029
+ * asset is written. `plugins` resolves a non-c2pa format (e.g. MXF); see the module docs.
3068
3030
  *
3069
3031
  * # Errors
3070
3032
  *
3071
- * Fails on RPC failure, a hashing error, an authoring error, a protocol violation,
3072
- * or when the format can't be inferred and none was given.
3033
+ * A format that is no media type, that the bytes contradict or that neither names; an RPC,
3034
+ * hashing, authoring or protocol failure.
3073
3035
  */
3074
3036
  sign(source: RangeSource, manifest: AssetManifestSpec, options: SignOptions, plugins: Array<PluginAuthor>, asyncOpts_?: {
3075
3037
  signal: AbortSignal;
@@ -3093,41 +3055,40 @@ export declare class AssetIssuer extends UniffiAbstractObject implements AssetIs
3093
3055
  */
3094
3056
  static create(client: SignerClientLike): AssetIssuerLike;
3095
3057
  /**
3096
- * Sign an asset from a [`RangeSource`], returning the sidecar plus the registry
3097
- * `manifest_id`. `options.delivery` selects where the manifest lives, its binders and,
3098
- * through its output, the sink the signed asset is written through. `options.format` is
3099
- * how the asset's format is known. `plugins` resolves a non-c2pa format (e.g. MXF); see the
3100
- * module docs for the dispatch.
3058
+ * Sign an asset from a [`RangeSource`], returning the sidecar and the active manifest's id.
3059
+ * `options.delivery` says where the manifest lives and, through its output, where the signed
3060
+ * asset is written. `plugins` resolves a non-c2pa format (e.g. MXF); see the module docs.
3101
3061
  *
3102
3062
  * # Errors
3103
3063
  *
3104
- * Fails on RPC failure, a hashing error, an authoring error, a protocol violation,
3105
- * or when the format can't be inferred and none was given.
3064
+ * A format that is no media type, that the bytes contradict or that neither names; an RPC,
3065
+ * hashing, authoring or protocol failure.
3106
3066
  */
3107
- sign(source: RangeSource, manifest: AssetManifestSpec, options: SignOptions, plugins: Array<PluginAuthor>, asyncOpts_?: {
3067
+ sign(source: RangeSource, manifest: AssetManifestSpec, options: SignOptions, plugins?: Array<PluginAuthor>, asyncOpts_?: {
3108
3068
  signal: AbortSignal;
3109
3069
  }): Promise<SignOutcome>;
3110
3070
  uniffiDestroy(): void;
3111
3071
  static instanceOf(obj_: any): obj_ is AssetIssuer;
3112
3072
  }
3113
3073
  /**
3114
- * Applies invisible watermarks through the deployment's marking service.
3074
+ * Inserts invisible watermarks through the deployment's marking route.
3115
3075
  *
3116
3076
  * Separate from [`AssetIssuer`] because marking is a content edit, not a signing step: it
3117
- * changes pixels, it happens before signing, and it returns the provenance facts it created
3118
- * rather than leaving anything downstream to infer them.
3077
+ * happens before signing, and it returns the actions it owes the manifest.
3119
3078
  */
3120
3079
  export interface AssetMarkerLike {
3121
3080
  /**
3122
- * Mark an image from a [`RangeSource`] and return it with the actions the marking created,
3123
- * each bound one carrying its binding.
3081
+ * Mark an asset from a [`RangeSource`], writing the marked asset into `into` in place of
3082
+ * what it held, and return one `c2pa.watermarked.*` action per mark, in the order inserted.
3083
+ * Sign what `into` holds.
3124
3084
  *
3125
3085
  * # Errors
3126
3086
  *
3127
- * Fails when the format can't be resolved, the asset is above the upload ceiling, the HTTP
3128
- * request fails, or the service response is malformed.
3087
+ * An unlisted algorithm, a format that is no media type or that the bytes contradict, an
3088
+ * asset above the upload ceiling, a source or sink that fails, or a marking route that
3089
+ * refused or answered out of contract.
3129
3090
  */
3130
- mark(source: RangeSource, options: MarkOptions, asyncOpts_?: {
3091
+ mark(source: RangeSource, into: RangeSink, options: MarkOptions, asyncOpts_?: {
3131
3092
  signal: AbortSignal;
3132
3093
  }): Promise<MarkOutcome>;
3133
3094
  }
@@ -3136,11 +3097,10 @@ export interface AssetMarkerLike {
3136
3097
  */
3137
3098
  export type AssetMarkerInterface = AssetMarkerLike;
3138
3099
  /**
3139
- * Applies invisible watermarks through the deployment's marking service.
3100
+ * Inserts invisible watermarks through the deployment's marking route.
3140
3101
  *
3141
3102
  * Separate from [`AssetIssuer`] because marking is a content edit, not a signing step: it
3142
- * changes pixels, it happens before signing, and it returns the provenance facts it created
3143
- * rather than leaving anything downstream to infer them.
3103
+ * happens before signing, and it returns the actions it owes the manifest.
3144
3104
  */
3145
3105
  export declare class AssetMarker extends UniffiAbstractObject implements AssetMarkerLike {
3146
3106
  readonly [uniffiTypeNameSymbol] = "AssetMarker";
@@ -3152,15 +3112,17 @@ export declare class AssetMarker extends UniffiAbstractObject implements AssetMa
3152
3112
  */
3153
3113
  static create(client: SignerClientLike): AssetMarkerLike;
3154
3114
  /**
3155
- * Mark an image from a [`RangeSource`] and return it with the actions the marking created,
3156
- * each bound one carrying its binding.
3115
+ * Mark an asset from a [`RangeSource`], writing the marked asset into `into` in place of
3116
+ * what it held, and return one `c2pa.watermarked.*` action per mark, in the order inserted.
3117
+ * Sign what `into` holds.
3157
3118
  *
3158
3119
  * # Errors
3159
3120
  *
3160
- * Fails when the format can't be resolved, the asset is above the upload ceiling, the HTTP
3161
- * request fails, or the service response is malformed.
3121
+ * An unlisted algorithm, a format that is no media type or that the bytes contradict, an
3122
+ * asset above the upload ceiling, a source or sink that fails, or a marking route that
3123
+ * refused or answered out of contract.
3162
3124
  */
3163
- mark(source: RangeSource, options: MarkOptions, asyncOpts_?: {
3125
+ mark(source: RangeSource, into: RangeSink, options: MarkOptions, asyncOpts_?: {
3164
3126
  signal: AbortSignal;
3165
3127
  }): Promise<MarkOutcome>;
3166
3128
  uniffiDestroy(): void;
@@ -3178,10 +3140,6 @@ export declare class AssetMarker extends UniffiAbstractObject implements AssetMa
3178
3140
  * That is what makes [`MemorySink`]'s ceiling stop applying: there is no byte array to count in an
3179
3141
  * `i32` and nothing resident, so a multi-GB master is signed at the disk's speed rather than the
3180
3142
  * host thread's, and `bytes()` is not something anyone has to call.
3181
- *
3182
- * No lock. A positioned write to a file is one `pwrite`, which the OS already makes atomic per
3183
- * call, and [`RangeWriter`] takes a shared borrow precisely so a backend like this pays nothing
3184
- * for being shared.
3185
3143
  */
3186
3144
  export interface FileSinkLike {
3187
3145
  length(asyncOpts_?: {
@@ -3213,10 +3171,6 @@ export type FileSinkInterface = FileSinkLike;
3213
3171
  * That is what makes [`MemorySink`]'s ceiling stop applying: there is no byte array to count in an
3214
3172
  * `i32` and nothing resident, so a multi-GB master is signed at the disk's speed rather than the
3215
3173
  * host thread's, and `bytes()` is not something anyone has to call.
3216
- *
3217
- * No lock. A positioned write to a file is one `pwrite`, which the OS already makes atomic per
3218
- * call, and [`RangeWriter`] takes a shared borrow precisely so a backend like this pays nothing
3219
- * for being shared.
3220
3174
  */
3221
3175
  export declare class FileSink extends UniffiAbstractObject implements FileSinkLike {
3222
3176
  readonly [uniffiTypeNameSymbol] = "FileSink";
@@ -3224,8 +3178,8 @@ export declare class FileSink extends UniffiAbstractObject implements FileSinkLi
3224
3178
  readonly [pointerLiteralSymbol]: UniffiHandle;
3225
3179
  private constructor();
3226
3180
  /**
3227
- * Create `path`, or truncate it if it is already there. What `embed` wants: it composes a
3228
- * whole asset, so the sink starts empty and grows.
3181
+ * Create `path`, or truncate it if it is already there. What a `sign` output wants: the
3182
+ * signed asset is written into it whole.
3229
3183
  *
3230
3184
  * # Errors
3231
3185
  *
@@ -3233,9 +3187,9 @@ export declare class FileSink extends UniffiAbstractObject implements FileSinkLi
3233
3187
  */
3234
3188
  static create(path: string): FileSinkLike;
3235
3189
  /**
3236
- * Open an existing `path` for reading and writing, keeping what is in it. What a fixed-slot
3237
- * patch wants: the asset is already there and only its reserved range changes, so truncating
3238
- * it would destroy the very thing being signed.
3190
+ * Open an existing `path` for reading and writing, keeping what is in it. What `embed` wants:
3191
+ * the asset is already there and the manifest is written into it, so truncating it would
3192
+ * destroy the very thing being signed.
3239
3193
  *
3240
3194
  * # Errors
3241
3195
  *
@@ -3324,70 +3278,8 @@ export declare class FileSource extends UniffiAbstractObject implements FileSour
3324
3278
  static instanceOf(obj_: any): obj_ is FileSource;
3325
3279
  }
3326
3280
  /**
3327
- * A binding you already hold, such as an out-of-band video ISCC. Reads nothing.
3328
- */
3329
- export interface HeldBinderLike {
3330
- derive(source: RangeSource, options: DeriveOptions, asyncOpts_?: {
3331
- signal: AbortSignal;
3332
- }): Promise<SoftBinding | undefined>;
3333
- }
3334
- /**
3335
- * @deprecated Use `HeldBinderLike` instead.
3336
- */
3337
- export type HeldBinderInterface = HeldBinderLike;
3338
- /**
3339
- * A binding you already hold, such as an out-of-band video ISCC. Reads nothing.
3340
- */
3341
- export declare class HeldBinder extends UniffiAbstractObject implements HeldBinderLike {
3342
- readonly [uniffiTypeNameSymbol] = "HeldBinder";
3343
- readonly [destructorGuardSymbol]: UniffiGcObject;
3344
- readonly [pointerLiteralSymbol]: UniffiHandle;
3345
- /**
3346
- * # Errors
3347
- *
3348
- * A binding with an empty algorithm or value.
3349
- */
3350
- constructor(binding: SoftBinding);
3351
- derive(source: RangeSource, options: DeriveOptions, asyncOpts_?: {
3352
- signal: AbortSignal;
3353
- }): Promise<SoftBinding | undefined>;
3354
- uniffiDestroy(): void;
3355
- static instanceOf(obj_: any): obj_ is HeldBinder;
3356
- }
3357
- /**
3358
- * Local ISCC Image-Code for supported image formats.
3359
- */
3360
- export interface IsccBinderLike {
3361
- derive(source: RangeSource, options: DeriveOptions, asyncOpts_?: {
3362
- signal: AbortSignal;
3363
- }): Promise<SoftBinding | undefined>;
3364
- }
3365
- /**
3366
- * @deprecated Use `IsccBinderLike` instead.
3367
- */
3368
- export type IsccBinderInterface = IsccBinderLike;
3369
- /**
3370
- * Local ISCC Image-Code for supported image formats.
3371
- */
3372
- export declare class IsccBinder extends UniffiAbstractObject implements IsccBinderLike {
3373
- readonly [uniffiTypeNameSymbol] = "IsccBinder";
3374
- readonly [destructorGuardSymbol]: UniffiGcObject;
3375
- readonly [pointerLiteralSymbol]: UniffiHandle;
3376
- constructor();
3377
- derive(source: RangeSource, options: DeriveOptions, asyncOpts_?: {
3378
- signal: AbortSignal;
3379
- }): Promise<SoftBinding | undefined>;
3380
- uniffiDestroy(): void;
3381
- static instanceOf(obj_: any): obj_ is IsccBinder;
3382
- }
3383
- /**
3384
- * An in-memory [`RangeSink`], for a caller that wants `embed`'s composed result back
3385
- * without writing a custom sink. A **native** implementation of a `with_foreign`
3386
- * interface (`#[uniffi::export]` on the trait impl, not the foreign callback path), so
3387
- * a Python caller writes no subclass: `sink = MemorySink(data)`, pass it to `embed`,
3388
- * then read `sink.bytes()` back. `&self`-only methods need interior mutability, so the
3389
- * buffer is `Mutex`-guarded (contention is a non-issue: the SDK calls it from one task
3390
- * at a time per sink).
3281
+ * An in-memory [`RangeSink`] for a caller that wants `embed`'s composed result back:
3282
+ * `sink = MemorySink(data)`, pass it to `embed`, then read `sink.bytes()`.
3391
3283
  *
3392
3284
  * # Size ceiling
3393
3285
  *
@@ -3399,9 +3291,8 @@ export declare class IsccBinder extends UniffiAbstractObject implements IsccBind
3399
3291
  * [`RangeSink`] over a file (or any store that seeks) for anything approaching that: the SDK
3400
3292
  * writes ranges straight through it and never holds the asset.
3401
3293
  *
3402
- * Construction and `bytes()` each copy the whole asset, on the calling thread: together with a
3403
- * `MemorySource` over the same asset that is about 12ms for 10 MB and 1.2s for 500 MB. A ranged
3404
- * sink pays none of it.
3294
+ * Construction and `bytes()` each move the whole asset across the boundary once, on the calling
3295
+ * thread. A ranged sink pays neither.
3405
3296
  */
3406
3297
  export interface MemorySinkLike {
3407
3298
  /**
@@ -3431,13 +3322,8 @@ export interface MemorySinkLike {
3431
3322
  */
3432
3323
  export type MemorySinkInterface = MemorySinkLike;
3433
3324
  /**
3434
- * An in-memory [`RangeSink`], for a caller that wants `embed`'s composed result back
3435
- * without writing a custom sink. A **native** implementation of a `with_foreign`
3436
- * interface (`#[uniffi::export]` on the trait impl, not the foreign callback path), so
3437
- * a Python caller writes no subclass: `sink = MemorySink(data)`, pass it to `embed`,
3438
- * then read `sink.bytes()` back. `&self`-only methods need interior mutability, so the
3439
- * buffer is `Mutex`-guarded (contention is a non-issue: the SDK calls it from one task
3440
- * at a time per sink).
3325
+ * An in-memory [`RangeSink`] for a caller that wants `embed`'s composed result back:
3326
+ * `sink = MemorySink(data)`, pass it to `embed`, then read `sink.bytes()`.
3441
3327
  *
3442
3328
  * # Size ceiling
3443
3329
  *
@@ -3449,9 +3335,8 @@ export type MemorySinkInterface = MemorySinkLike;
3449
3335
  * [`RangeSink`] over a file (or any store that seeks) for anything approaching that: the SDK
3450
3336
  * writes ranges straight through it and never holds the asset.
3451
3337
  *
3452
- * Construction and `bytes()` each copy the whole asset, on the calling thread: together with a
3453
- * `MemorySource` over the same asset that is about 12ms for 10 MB and 1.2s for 500 MB. A ranged
3454
- * sink pays none of it.
3338
+ * Construction and `bytes()` each move the whole asset across the boundary once, on the calling
3339
+ * thread. A ranged sink pays neither.
3455
3340
  */
3456
3341
  export declare class MemorySink extends UniffiAbstractObject implements MemorySinkLike {
3457
3342
  readonly [uniffiTypeNameSymbol] = "MemorySink";
@@ -3488,11 +3373,8 @@ export declare class MemorySink extends UniffiAbstractObject implements MemorySi
3488
3373
  static instanceOf(obj_: any): obj_ is MemorySink;
3489
3374
  }
3490
3375
  /**
3491
- * An in-memory [`RangeSource`], for a caller that already holds the whole asset as
3492
- * bytes and doesn't want to write a custom source. A **native** implementation of a
3493
- * `with_foreign` interface (`#[uniffi::export]` on the trait impl, not the foreign
3494
- * callback path), so the generated binding is a plain constructible object and a Python
3495
- * caller writes no subclass at all: `MemorySource(data)`.
3376
+ * An in-memory [`RangeSource`] for a caller that already holds the whole asset as bytes:
3377
+ * `MemorySource(data)`, no subclass.
3496
3378
  *
3497
3379
  * # Size ceiling
3498
3380
  *
@@ -3502,9 +3384,10 @@ export declare class MemorySink extends UniffiAbstractObject implements MemorySi
3502
3384
  * [`RangeSource`] over a file handle for anything approaching that: the SDK only ever asks for
3503
3385
  * bounded ranges, so nothing else has to hold the asset.
3504
3386
  *
3505
- * Construction copies the whole asset across the boundary, on the calling thread: about 5ms for
3506
- * 10 MB, 315ms for 500 MB. That is the one part of a sign or verify the SDK cannot move off your
3507
- * thread, and neither a ranged source nor [`FileSource`] pays it.
3387
+ * Construction moves the whole asset across the boundary once, on the calling thread; the SDK
3388
+ * then holds what arrived and answers every read as a window into it. That crossing is the one
3389
+ * part of a sign or verify the SDK cannot move off your thread, and neither a ranged source nor
3390
+ * [`FileSource`] pays it.
3508
3391
  */
3509
3392
  export interface MemorySourceLike {
3510
3393
  length(asyncOpts_?: {
@@ -3519,11 +3402,8 @@ export interface MemorySourceLike {
3519
3402
  */
3520
3403
  export type MemorySourceInterface = MemorySourceLike;
3521
3404
  /**
3522
- * An in-memory [`RangeSource`], for a caller that already holds the whole asset as
3523
- * bytes and doesn't want to write a custom source. A **native** implementation of a
3524
- * `with_foreign` interface (`#[uniffi::export]` on the trait impl, not the foreign
3525
- * callback path), so the generated binding is a plain constructible object and a Python
3526
- * caller writes no subclass at all: `MemorySource(data)`.
3405
+ * An in-memory [`RangeSource`] for a caller that already holds the whole asset as bytes:
3406
+ * `MemorySource(data)`, no subclass.
3527
3407
  *
3528
3408
  * # Size ceiling
3529
3409
  *
@@ -3533,9 +3413,10 @@ export type MemorySourceInterface = MemorySourceLike;
3533
3413
  * [`RangeSource`] over a file handle for anything approaching that: the SDK only ever asks for
3534
3414
  * bounded ranges, so nothing else has to hold the asset.
3535
3415
  *
3536
- * Construction copies the whole asset across the boundary, on the calling thread: about 5ms for
3537
- * 10 MB, 315ms for 500 MB. That is the one part of a sign or verify the SDK cannot move off your
3538
- * thread, and neither a ranged source nor [`FileSource`] pays it.
3416
+ * Construction moves the whole asset across the boundary once, on the calling thread; the SDK
3417
+ * then holds what arrived and answers every read as a window into it. That crossing is the one
3418
+ * part of a sign or verify the SDK cannot move off your thread, and neither a ranged source nor
3419
+ * [`FileSource`] pays it.
3539
3420
  */
3540
3421
  export declare class MemorySource extends UniffiAbstractObject implements MemorySourceLike {
3541
3422
  readonly [uniffiTypeNameSymbol] = "MemorySource";
@@ -3583,36 +3464,36 @@ export declare class SignerClient extends UniffiAbstractObject implements Signer
3583
3464
  * `options` is malformed. The channel connects lazily, so an unreachable Signer
3584
3465
  * surfaces on the first sign RPC instead.
3585
3466
  */
3586
- static connect(endpoint: string, options: ConnectOptions, asyncOpts_?: {
3467
+ static connect(endpoint: string, options?: ConnectOptions, asyncOpts_?: {
3587
3468
  signal: AbortSignal;
3588
3469
  }): Promise<SignerClientLike>;
3589
3470
  uniffiDestroy(): void;
3590
3471
  static instanceOf(obj_: any): obj_ is SignerClient;
3591
3472
  }
3592
3473
  /**
3593
- * A live-stream signer bound to a [`SignerClient`](super::client::SignerClient) and a
3474
+ * A stream signer bound to a [`SignerClient`](super::client::SignerClient) and a
3594
3475
  * [`SigningVault`]. Construct once with [`create`](Self::create), then `init` a session and
3595
3476
  * sign every segment through the [`StreamSession`] it returns.
3596
3477
  */
3597
3478
  export interface StreamIssuerLike {
3598
3479
  /**
3599
- * Open the stream at `stream_id`: mint its first session key under
3600
- * `options.rotation_policy`, sign the init (moov) segment under `options.delivery`, and
3601
- * hand back a [`StreamSession`] to sign through.
3480
+ * Open the stream `id`: mint its first session key under `options.rotation_policy`, sign the
3481
+ * init (moov) segment `source` under `options.delivery`, and hand back a [`StreamSession`]
3482
+ * to sign through.
3602
3483
  *
3603
3484
  * On `rotation_due`, call [`StreamIssuer::rotate`], not this.
3604
3485
  *
3605
3486
  * # Errors
3606
3487
  *
3607
- * Fails on signer RPC failure, a vault error, or an `init_body` that isn't a BMFF init
3608
- * segment.
3488
+ * Fails on signer RPC failure, a vault error, or a `source` that isn't a BMFF init segment.
3609
3489
  */
3610
- init(streamId: string, initBody: RangeSource, manifest: StreamManifestSpec, options: InitOptions, asyncOpts_?: {
3490
+ init(id: string, source: RangeSource, manifest: StreamManifestSpec, options: InitOptions, asyncOpts_?: {
3611
3491
  signal: AbortSignal;
3612
3492
  }): Promise<StreamStart>;
3613
3493
  /**
3614
3494
  * Succeed `session` on the stream it already names, signing a fresh init (moov) segment
3615
- * under a new key and forgetting the outgoing one.
3495
+ * under a new key and forgetting the outgoing one. Once this succeeds, `session` refuses to
3496
+ * sign; until then it keeps signing, so a failed rotation can be retried.
3616
3497
  *
3617
3498
  * The stream id comes from `session`, so a rotation cannot be pointed at the wrong stream,
3618
3499
  * and the retired key cannot be left behind: it would still sign for the rest of its
@@ -3620,9 +3501,10 @@ export interface StreamIssuerLike {
3620
3501
  *
3621
3502
  * # Errors
3622
3503
  *
3623
- * As [`StreamIssuer::init`].
3504
+ * As [`StreamIssuer::init`], plus `FAILED_PRECONDITION` (`SESSION_ENDED`) for a session
3505
+ * already stopped or rotated, or with a `stop` or `rotate` in flight.
3624
3506
  */
3625
- rotate(session: StreamSessionLike, initBody: RangeSource, manifest: StreamManifestSpec, options: InitOptions, asyncOpts_?: {
3507
+ rotate(session: StreamSessionLike, source: RangeSource, manifest: StreamManifestSpec, options: InitOptions, asyncOpts_?: {
3626
3508
  signal: AbortSignal;
3627
3509
  }): Promise<StreamStart>;
3628
3510
  }
@@ -3631,7 +3513,7 @@ export interface StreamIssuerLike {
3631
3513
  */
3632
3514
  export type StreamIssuerInterface = StreamIssuerLike;
3633
3515
  /**
3634
- * A live-stream signer bound to a [`SignerClient`](super::client::SignerClient) and a
3516
+ * A stream signer bound to a [`SignerClient`](super::client::SignerClient) and a
3635
3517
  * [`SigningVault`]. Construct once with [`create`](Self::create), then `init` a session and
3636
3518
  * sign every segment through the [`StreamSession`] it returns.
3637
3519
  */
@@ -3645,23 +3527,23 @@ export declare class StreamIssuer extends UniffiAbstractObject implements Stream
3645
3527
  */
3646
3528
  static create(client: SignerClientLike, vault: SigningVault): StreamIssuerLike;
3647
3529
  /**
3648
- * Open the stream at `stream_id`: mint its first session key under
3649
- * `options.rotation_policy`, sign the init (moov) segment under `options.delivery`, and
3650
- * hand back a [`StreamSession`] to sign through.
3530
+ * Open the stream `id`: mint its first session key under `options.rotation_policy`, sign the
3531
+ * init (moov) segment `source` under `options.delivery`, and hand back a [`StreamSession`]
3532
+ * to sign through.
3651
3533
  *
3652
3534
  * On `rotation_due`, call [`StreamIssuer::rotate`], not this.
3653
3535
  *
3654
3536
  * # Errors
3655
3537
  *
3656
- * Fails on signer RPC failure, a vault error, or an `init_body` that isn't a BMFF init
3657
- * segment.
3538
+ * Fails on signer RPC failure, a vault error, or a `source` that isn't a BMFF init segment.
3658
3539
  */
3659
- init(streamId: string, initBody: RangeSource, manifest: StreamManifestSpec, options: InitOptions, asyncOpts_?: {
3540
+ init(id: string, source: RangeSource, manifest: StreamManifestSpec, options: InitOptions, asyncOpts_?: {
3660
3541
  signal: AbortSignal;
3661
3542
  }): Promise<StreamStart>;
3662
3543
  /**
3663
3544
  * Succeed `session` on the stream it already names, signing a fresh init (moov) segment
3664
- * under a new key and forgetting the outgoing one.
3545
+ * under a new key and forgetting the outgoing one. Once this succeeds, `session` refuses to
3546
+ * sign; until then it keeps signing, so a failed rotation can be retried.
3665
3547
  *
3666
3548
  * The stream id comes from `session`, so a rotation cannot be pointed at the wrong stream,
3667
3549
  * and the retired key cannot be left behind: it would still sign for the rest of its
@@ -3669,24 +3551,26 @@ export declare class StreamIssuer extends UniffiAbstractObject implements Stream
3669
3551
  *
3670
3552
  * # Errors
3671
3553
  *
3672
- * As [`StreamIssuer::init`].
3554
+ * As [`StreamIssuer::init`], plus `FAILED_PRECONDITION` (`SESSION_ENDED`) for a session
3555
+ * already stopped or rotated, or with a `stop` or `rotate` in flight.
3673
3556
  */
3674
- rotate(session: StreamSessionLike, initBody: RangeSource, manifest: StreamManifestSpec, options: InitOptions, asyncOpts_?: {
3557
+ rotate(session: StreamSessionLike, source: RangeSource, manifest: StreamManifestSpec, options: InitOptions, asyncOpts_?: {
3675
3558
  signal: AbortSignal;
3676
3559
  }): Promise<StreamStart>;
3677
3560
  uniffiDestroy(): void;
3678
3561
  static instanceOf(obj_: any): obj_ is StreamIssuer;
3679
3562
  }
3680
3563
  /**
3681
- * A per-session ECDSA key store, implemented by the host. `mint` returns a fresh public key
3682
- * that will be signed under for `validity_period_secs`, so give it that lifetime and let the
3683
- * store expire it; `sign` produces the raw ECDSA signature over `payload` (the SDK frames it
3684
- * into COSE); `forget` drops a retired key. Every method may raise to abort.
3564
+ * A per-session ECDSA key store, implemented by the host. `mint` returns a fresh key that will be
3565
+ * signed under for the request's `validity_period`, so give it that lifetime and let the store
3566
+ * expire it; a new input to minting arrives as a field of `MintRequest`. `sign` produces the raw
3567
+ * ECDSA signature over `payload` with the key `kid` names (the SDK frames it into COSE);
3568
+ * `forget` drops a retired key. Every method may raise to abort.
3685
3569
  */
3686
3570
  export interface SigningVault {
3687
- mint(validityPeriodSecs: bigint, asyncOpts_?: {
3571
+ mint(request: MintRequest, asyncOpts_?: {
3688
3572
  signal: AbortSignal;
3689
- }): Promise<VaultPublicKey>;
3573
+ }): Promise<SessionKey>;
3690
3574
  sign(kid: ArrayBuffer, payload: ArrayBuffer, asyncOpts_?: {
3691
3575
  signal: AbortSignal;
3692
3576
  }): Promise<ArrayBuffer>;
@@ -3743,13 +3627,6 @@ declare const _default$1: Readonly<{
3743
3627
  lift(value: UniffiByteArray): AssetDelivery;
3744
3628
  lower(value: AssetDelivery, alloc: RustBufferAllocator): UniffiByteArray;
3745
3629
  };
3746
- FfiConverterTypeAssetFormat: {
3747
- readFromCursor(c: Cursor): AssetFormat;
3748
- writeIntoCursor(value: AssetFormat, c: Cursor): void;
3749
- allocationSize(value: AssetFormat): number;
3750
- lift(value: UniffiByteArray): AssetFormat;
3751
- lower(value: AssetFormat, alloc: RustBufferAllocator): UniffiByteArray;
3752
- };
3753
3630
  FfiConverterTypeAssetIssuer: FfiConverterObject<AssetIssuerLike>;
3754
3631
  FfiConverterTypeAssetManifestSpec: {
3755
3632
  readFromCursor(c: Cursor): AssetManifestSpec;
@@ -3766,7 +3643,20 @@ declare const _default$1: Readonly<{
3766
3643
  lift(value: UniffiByteArray): AssetOrigin;
3767
3644
  lower(value: AssetOrigin, alloc: RustBufferAllocator): UniffiByteArray;
3768
3645
  };
3769
- FfiConverterTypeBinder: FfiConverterObjectWithCallbacks<Binder>;
3646
+ FfiConverterTypeBlock: {
3647
+ readFromCursor(c: Cursor): Block;
3648
+ writeIntoCursor(value: Block, c: Cursor): void;
3649
+ allocationSize(value: Block): number;
3650
+ lift(value: UniffiByteArray): Block;
3651
+ lower(value: Block, alloc: RustBufferAllocator): UniffiByteArray;
3652
+ };
3653
+ FfiConverterTypeByteRange: {
3654
+ readFromCursor(c: Cursor): ByteRange;
3655
+ writeIntoCursor(value: ByteRange, c: Cursor): void;
3656
+ allocationSize(value: ByteRange): number;
3657
+ lift(value: UniffiByteArray): ByteRange;
3658
+ lower(value: ByteRange, alloc: RustBufferAllocator): UniffiByteArray;
3659
+ };
3770
3660
  FfiConverterTypeCode: {
3771
3661
  readFromCursor(c: Cursor): Code;
3772
3662
  writeIntoCursor(value: Code, c: Cursor): void;
@@ -3788,6 +3678,14 @@ declare const _default$1: Readonly<{
3788
3678
  lift(value: UniffiByteArray): ComponentEvent;
3789
3679
  lower(value: ComponentEvent, alloc: RustBufferAllocator): UniffiByteArray;
3790
3680
  };
3681
+ FfiConverterTypeCompute: FfiConverterObjectWithCallbacks<Compute>;
3682
+ FfiConverterTypeComputeRequest: {
3683
+ readFromCursor(c: Cursor): ComputeRequest;
3684
+ writeIntoCursor(value: ComputeRequest, c: Cursor): void;
3685
+ allocationSize(value: ComputeRequest): number;
3686
+ lift(value: UniffiByteArray): ComputeRequest;
3687
+ lower(value: ComputeRequest, alloc: RustBufferAllocator): UniffiByteArray;
3688
+ };
3791
3689
  FfiConverterTypeConnectOptions: {
3792
3690
  readFromCursor(c: Cursor): ConnectOptions;
3793
3691
  writeIntoCursor(value: ConnectOptions, c: Cursor): void;
@@ -3809,13 +3707,6 @@ declare const _default$1: Readonly<{
3809
3707
  lift(value: UniffiByteArray): CustomAction;
3810
3708
  lower(value: CustomAction, alloc: RustBufferAllocator): UniffiByteArray;
3811
3709
  };
3812
- FfiConverterTypeDeriveOptions: {
3813
- readFromCursor(c: Cursor): DeriveOptions;
3814
- writeIntoCursor(value: DeriveOptions, c: Cursor): void;
3815
- allocationSize(value: DeriveOptions): number;
3816
- lift(value: UniffiByteArray): DeriveOptions;
3817
- lower(value: DeriveOptions, alloc: RustBufferAllocator): UniffiByteArray;
3818
- };
3819
3710
  FfiConverterTypeEmbedOptions: {
3820
3711
  readFromCursor(c: Cursor): EmbedOptions;
3821
3712
  writeIntoCursor(value: EmbedOptions, c: Cursor): void;
@@ -3832,7 +3723,6 @@ declare const _default$1: Readonly<{
3832
3723
  };
3833
3724
  FfiConverterTypeFileSink: FfiConverterObject<FileSinkLike>;
3834
3725
  FfiConverterTypeFileSource: FfiConverterObject<FileSourceLike>;
3835
- FfiConverterTypeHeldBinder: FfiConverterObject<HeldBinderLike>;
3836
3726
  FfiConverterTypeIdentity: {
3837
3727
  readFromCursor(c: Cursor): Identity;
3838
3728
  writeIntoCursor(value: Identity, c: Cursor): void;
@@ -3847,12 +3737,12 @@ declare const _default$1: Readonly<{
3847
3737
  lift(value: UniffiByteArray): Ingredient;
3848
3738
  lower(value: Ingredient, alloc: RustBufferAllocator): UniffiByteArray;
3849
3739
  };
3850
- FfiConverterTypeIngredientSource: {
3851
- readFromCursor(c: Cursor): IngredientSource;
3852
- writeIntoCursor(value: IngredientSource, c: Cursor): void;
3853
- allocationSize(value: IngredientSource): number;
3854
- lift(value: UniffiByteArray): IngredientSource;
3855
- lower(value: IngredientSource, alloc: RustBufferAllocator): UniffiByteArray;
3740
+ FfiConverterTypeIngredientKind: {
3741
+ readFromCursor(c: Cursor): IngredientKind;
3742
+ writeIntoCursor(value: IngredientKind, c: Cursor): void;
3743
+ allocationSize(value: IngredientKind): number;
3744
+ lift(value: UniffiByteArray): IngredientKind;
3745
+ lower(value: IngredientKind, alloc: RustBufferAllocator): UniffiByteArray;
3856
3746
  };
3857
3747
  FfiConverterTypeInitOptions: {
3858
3748
  readFromCursor(c: Cursor): InitOptions;
@@ -3868,7 +3758,6 @@ declare const _default$1: Readonly<{
3868
3758
  lift(value: UniffiByteArray): InitOutcome;
3869
3759
  lower(value: InitOutcome, alloc: RustBufferAllocator): UniffiByteArray;
3870
3760
  };
3871
- FfiConverterTypeIsccBinder: FfiConverterObject<IsccBinderLike>;
3872
3761
  FfiConverterTypeJsonObject: FfiConverter<UniffiByteArray, string>;
3873
3762
  FfiConverterTypeJsonValue: FfiConverter<UniffiByteArray, string>;
3874
3763
  FfiConverterTypeMarkOptions: {
@@ -3887,6 +3776,13 @@ declare const _default$1: Readonly<{
3887
3776
  };
3888
3777
  FfiConverterTypeMemorySink: FfiConverterObject<MemorySinkLike>;
3889
3778
  FfiConverterTypeMemorySource: FfiConverterObject<MemorySourceLike>;
3779
+ FfiConverterTypeMintRequest: {
3780
+ readFromCursor(c: Cursor): MintRequest;
3781
+ writeIntoCursor(value: MintRequest, c: Cursor): void;
3782
+ allocationSize(value: MintRequest): number;
3783
+ lift(value: UniffiByteArray): MintRequest;
3784
+ lower(value: MintRequest, alloc: RustBufferAllocator): UniffiByteArray;
3785
+ };
3890
3786
  FfiConverterTypeOpenedOrigin: {
3891
3787
  readFromCursor(c: Cursor): OpenedOrigin;
3892
3788
  writeIntoCursor(value: OpenedOrigin, c: Cursor): void;
@@ -3894,22 +3790,8 @@ declare const _default$1: Readonly<{
3894
3790
  lift(value: UniffiByteArray): OpenedOrigin;
3895
3791
  lower(value: OpenedOrigin, alloc: RustBufferAllocator): UniffiByteArray;
3896
3792
  };
3897
- FfiConverterTypeOrigin: {
3898
- readFromCursor(c: Cursor): Origin;
3899
- writeIntoCursor(value: Origin, c: Cursor): void;
3900
- allocationSize(value: Origin): number;
3901
- lift(value: UniffiByteArray): Origin;
3902
- lower(value: Origin, alloc: RustBufferAllocator): UniffiByteArray;
3903
- };
3904
3793
  FfiConverterTypeRangeSink: FfiConverterObjectWithCallbacks<RangeSink>;
3905
3794
  FfiConverterTypeRangeSource: FfiConverterObjectWithCallbacks<RangeSource>;
3906
- FfiConverterTypeRegion: {
3907
- readFromCursor(c: Cursor): Region;
3908
- writeIntoCursor(value: Region, c: Cursor): void;
3909
- allocationSize(value: Region): number;
3910
- lift(value: UniffiByteArray): Region;
3911
- lower(value: Region, alloc: RustBufferAllocator): UniffiByteArray;
3912
- };
3913
3795
  FfiConverterTypeRotationPolicy: {
3914
3796
  readFromCursor(c: Cursor): RotationPolicy;
3915
3797
  writeIntoCursor(value: RotationPolicy, c: Cursor): void;
@@ -3917,6 +3799,13 @@ declare const _default$1: Readonly<{
3917
3799
  lift(value: UniffiByteArray): RotationPolicy;
3918
3800
  lower(value: RotationPolicy, alloc: RustBufferAllocator): UniffiByteArray;
3919
3801
  };
3802
+ FfiConverterTypeScope: {
3803
+ readFromCursor(c: Cursor): Scope;
3804
+ writeIntoCursor(value: Scope, c: Cursor): void;
3805
+ allocationSize(value: Scope): number;
3806
+ lift(value: UniffiByteArray): Scope;
3807
+ lower(value: Scope, alloc: RustBufferAllocator): UniffiByteArray;
3808
+ };
3920
3809
  FfiConverterTypeSdkError: {
3921
3810
  readFromCursor(c: Cursor): SdkError;
3922
3811
  writeIntoCursor(value: SdkError, c: Cursor): void;
@@ -3938,6 +3827,13 @@ declare const _default$1: Readonly<{
3938
3827
  lift(value: UniffiByteArray): SegmentOutcome;
3939
3828
  lower(value: SegmentOutcome, alloc: RustBufferAllocator): UniffiByteArray;
3940
3829
  };
3830
+ FfiConverterTypeSessionKey: {
3831
+ readFromCursor(c: Cursor): SessionKey;
3832
+ writeIntoCursor(value: SessionKey, c: Cursor): void;
3833
+ allocationSize(value: SessionKey): number;
3834
+ lift(value: UniffiByteArray): SessionKey;
3835
+ lower(value: SessionKey, alloc: RustBufferAllocator): UniffiByteArray;
3836
+ };
3941
3837
  FfiConverterTypeSignOptions: {
3942
3838
  readFromCursor(c: Cursor): SignOptions;
3943
3839
  writeIntoCursor(value: SignOptions, c: Cursor): void;
@@ -3967,6 +3863,20 @@ declare const _default$1: Readonly<{
3967
3863
  lift(value: UniffiByteArray): SoftBinding;
3968
3864
  lower(value: SoftBinding, alloc: RustBufferAllocator): UniffiByteArray;
3969
3865
  };
3866
+ FfiConverterTypeSoftBindingSource: {
3867
+ readFromCursor(c: Cursor): SoftBindingSource;
3868
+ writeIntoCursor(value: SoftBindingSource, c: Cursor): void;
3869
+ allocationSize(value: SoftBindingSource): number;
3870
+ lift(value: UniffiByteArray): SoftBindingSource;
3871
+ lower(value: SoftBindingSource, alloc: RustBufferAllocator): UniffiByteArray;
3872
+ };
3873
+ FfiConverterTypeSoftwareAgent: {
3874
+ readFromCursor(c: Cursor): SoftwareAgent;
3875
+ writeIntoCursor(value: SoftwareAgent, c: Cursor): void;
3876
+ allocationSize(value: SoftwareAgent): number;
3877
+ lift(value: UniffiByteArray): SoftwareAgent;
3878
+ lower(value: SoftwareAgent, alloc: RustBufferAllocator): UniffiByteArray;
3879
+ };
3970
3880
  FfiConverterTypeStandardAction: {
3971
3881
  readFromCursor(c: Cursor): StandardAction;
3972
3882
  writeIntoCursor(value: StandardAction, c: Cursor): void;
@@ -3989,6 +3899,13 @@ declare const _default$1: Readonly<{
3989
3899
  lift(value: UniffiByteArray): StreamManifestSpec;
3990
3900
  lower(value: StreamManifestSpec, alloc: RustBufferAllocator): UniffiByteArray;
3991
3901
  };
3902
+ FfiConverterTypeStreamOrigin: {
3903
+ readFromCursor(c: Cursor): StreamOrigin;
3904
+ writeIntoCursor(value: StreamOrigin, c: Cursor): void;
3905
+ allocationSize(value: StreamOrigin): number;
3906
+ lift(value: UniffiByteArray): StreamOrigin;
3907
+ lower(value: StreamOrigin, alloc: RustBufferAllocator): UniffiByteArray;
3908
+ };
3992
3909
  FfiConverterTypeStreamSession: FfiConverterObject<StreamSessionLike>;
3993
3910
  FfiConverterTypeStreamStart: {
3994
3911
  readFromCursor(c: Cursor): StreamStart;
@@ -4004,15 +3921,14 @@ declare const _default$1: Readonly<{
4004
3921
  lift(value: UniffiByteArray): Thumbnail;
4005
3922
  lower(value: Thumbnail, alloc: RustBufferAllocator): UniffiByteArray;
4006
3923
  };
4007
- FfiConverterTypeTimestamp: FfiConverter<UniffiByteArray, string>;
4008
- FfiConverterTypeUrl: FfiConverter<UniffiByteArray, string>;
4009
- FfiConverterTypeVaultPublicKey: {
4010
- readFromCursor(c: Cursor): VaultPublicKey;
4011
- writeIntoCursor(value: VaultPublicKey, c: Cursor): void;
4012
- allocationSize(value: VaultPublicKey): number;
4013
- lift(value: UniffiByteArray): VaultPublicKey;
4014
- lower(value: VaultPublicKey, alloc: RustBufferAllocator): UniffiByteArray;
3924
+ FfiConverterTypeTimespan: {
3925
+ readFromCursor(c: Cursor): Timespan;
3926
+ writeIntoCursor(value: Timespan, c: Cursor): void;
3927
+ allocationSize(value: Timespan): number;
3928
+ lift(value: UniffiByteArray): Timespan;
3929
+ lower(value: Timespan, alloc: RustBufferAllocator): UniffiByteArray;
4015
3930
  };
3931
+ FfiConverterTypeUrl: FfiConverter<UniffiByteArray, string>;
4016
3932
  };
4017
3933
  }>;
4018
3934
  //#endregion