@trylimbo/sdk-issuer 0.2.25 → 0.3.0-canary.41

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 caller-written format 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,12 +1784,13 @@ 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;
1793
+ parameters: JsonObject;
1833
1794
  detail?: ActionDetail;
1834
1795
  componentIds: Array<string>;
1835
1796
  };
@@ -1837,8 +1798,8 @@ export type StandardAction = {
1837
1798
  * Generated factory for {@link StandardAction} record objects.
1838
1799
  */
1839
1800
  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;
1801
+ create: (partial: Partial<StandardAction> & Required<Omit<StandardAction, "componentIds" | "detail" | "parameters">>) => StandardAction;
1802
+ new: (partial: Partial<StandardAction> & Required<Omit<StandardAction, "componentIds" | "detail" | "parameters">>) => StandardAction;
1842
1803
  defaults: () => Partial<StandardAction>;
1843
1804
  }>;
1844
1805
  export declare enum Action_Tags {
@@ -1908,8 +1869,7 @@ export declare const Action: Readonly<{
1908
1869
  }>;
1909
1870
  export type Action = InstanceType<typeof Action['Custom' | 'Standard']>;
1910
1871
  /**
1911
- * Pass `None` to skip the CAWG identity signing path entirely. Each entry of `identities` is
1912
- * one CAWG `VerifiedIdentity` object.
1872
+ * A CAWG identity assertion: each of `identities` is one CAWG `verifiedIdentities` entry.
1913
1873
  */
1914
1874
  export type Identity = {
1915
1875
  roles: Array<string>;
@@ -1919,8 +1879,8 @@ export type Identity = {
1919
1879
  * Generated factory for {@link Identity} record objects.
1920
1880
  */
1921
1881
  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;
1882
+ create: (partial: Partial<Identity> & Required<Omit<Identity, "roles">>) => Identity;
1883
+ new: (partial: Partial<Identity> & Required<Omit<Identity, "roles">>) => Identity;
1924
1884
  defaults: () => Partial<Identity>;
1925
1885
  }>;
1926
1886
  export declare enum ComponentEvent_Tags {
@@ -1982,6 +1942,7 @@ export declare const ComponentEvent: Readonly<{
1982
1942
  };
1983
1943
  Removed: {
1984
1944
  new (inner: {
1945
+ label: string;
1985
1946
  detail?: ActionDetail;
1986
1947
  }): {
1987
1948
  /**
@@ -1991,14 +1952,18 @@ export declare const ComponentEvent: Readonly<{
1991
1952
  readonly [uniffiTypeNameSymbol]: "ComponentEvent";
1992
1953
  readonly tag: ComponentEvent_Tags.Removed;
1993
1954
  readonly inner: Readonly<{
1955
+ label: string;
1994
1956
  detail?: ActionDetail;
1995
1957
  }>;
1996
1958
  };
1997
1959
  new: (partial: Parameters<(partial: Partial<{
1960
+ label: string;
1998
1961
  detail?: ActionDetail;
1999
1962
  }> & Required<Omit<{
1963
+ label: string;
2000
1964
  detail?: ActionDetail;
2001
1965
  }, "detail">>) => {
1966
+ label: string;
2002
1967
  detail?: ActionDetail;
2003
1968
  }>[0]) => {
2004
1969
  /**
@@ -2008,6 +1973,7 @@ export declare const ComponentEvent: Readonly<{
2008
1973
  readonly [uniffiTypeNameSymbol]: "ComponentEvent";
2009
1974
  readonly tag: ComponentEvent_Tags.Removed;
2010
1975
  readonly inner: Readonly<{
1976
+ label: string;
2011
1977
  detail?: ActionDetail;
2012
1978
  }>;
2013
1979
  };
@@ -2019,6 +1985,7 @@ export declare const ComponentEvent: Readonly<{
2019
1985
  readonly [uniffiTypeNameSymbol]: "ComponentEvent";
2020
1986
  readonly tag: ComponentEvent_Tags.Removed;
2021
1987
  readonly inner: Readonly<{
1988
+ label: string;
2022
1989
  detail?: ActionDetail;
2023
1990
  }>;
2024
1991
  };
@@ -2058,8 +2025,10 @@ export declare const ComponentEvent: Readonly<{
2058
2025
  * to be folded into and the variant has none.
2059
2026
  */
2060
2027
  export type ComponentEvent = InstanceType<typeof ComponentEvent['Placed' | 'Removed' | 'InputTo']>;
2028
+ /**
2029
+ * An ingredient other than the parent; see the core [`provenance::Component`].
2030
+ */
2061
2031
  export type Component = {
2062
- id: string;
2063
2032
  asset: Ingredient;
2064
2033
  event: ComponentEvent;
2065
2034
  };
@@ -2074,160 +2043,205 @@ export declare const Component: Readonly<{
2074
2043
  export type AssetManifestSpec = {
2075
2044
  title?: string;
2076
2045
  origin: AssetOrigin;
2046
+ /**
2047
+ * Every action performed on the asset; the manifest states the list is complete (C2PA
2048
+ * `allActionsIncluded`).
2049
+ */
2077
2050
  actions: Array<Action>;
2078
2051
  identity?: Identity;
2079
2052
  assertions: Array<Assertion>;
2080
- components: Array<Component>;
2053
+ /**
2054
+ * Keyed by the handle actions name them by.
2055
+ */
2056
+ components: Map<string, Component>;
2081
2057
  };
2082
2058
  /**
2083
2059
  * Generated factory for {@link AssetManifestSpec} record objects.
2084
2060
  */
2085
2061
  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;
2062
+ create: (partial: Partial<AssetManifestSpec> & Required<Omit<AssetManifestSpec, "actions" | "assertions" | "components" | "identity" | "title">>) => AssetManifestSpec;
2063
+ new: (partial: Partial<AssetManifestSpec> & Required<Omit<AssetManifestSpec, "actions" | "assertions" | "components" | "identity" | "title">>) => AssetManifestSpec;
2088
2064
  defaults: () => Partial<AssetManifestSpec>;
2089
2065
  }>;
2090
2066
  /**
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.
2067
+ * A byte range holding a bare C2PA manifest store, or reserved for one. A record of
2068
+ * primitives, so a plugin in its OWN UniFFI namespace declares a structurally identical
2069
+ * one and the two cross the boundary without sharing a Rust type.
2070
+ */
2071
+ export type ByteRange = {
2072
+ offset: bigint;
2073
+ length: bigint;
2074
+ };
2075
+ /**
2076
+ * Generated factory for {@link ByteRange} record objects.
2077
+ */
2078
+ export declare const ByteRange: Readonly<{
2079
+ create: (partial: Partial<ByteRange> & Required<Omit<ByteRange, never>>) => ByteRange;
2080
+ new: (partial: Partial<ByteRange> & Required<Omit<ByteRange, never>>) => ByteRange;
2081
+ defaults: () => Partial<ByteRange>;
2082
+ }>;
2083
+ /**
2084
+ * What one [`Compute::compute`] is asked: the asset and its media type.
2085
+ */
2086
+ export type ComputeRequest = {
2087
+ source: RangeSource;
2088
+ format: string;
2089
+ };
2090
+ /**
2091
+ * Generated factory for {@link ComputeRequest} record objects.
2092
+ */
2093
+ export declare const ComputeRequest: Readonly<{
2094
+ create: (partial: Partial<ComputeRequest> & Required<Omit<ComputeRequest, never>>) => ComputeRequest;
2095
+ new: (partial: Partial<ComputeRequest> & Required<Omit<ComputeRequest, never>>) => ComputeRequest;
2096
+ defaults: () => Partial<ComputeRequest>;
2097
+ }>;
2098
+ /**
2099
+ * The signer connection. Neither deadline bounds the hash, which runs client side between the
2100
+ * two RPCs.
2107
2101
  */
2108
2102
  export type ConnectOptions = {
2109
- headers?: Map<string, string>;
2110
2103
  /**
2111
- * Per-RPC deadline. Bounds one leg of the signing protocol, not the whole sign.
2104
+ * Sent on every request, names lower-cased; two names that differ only by case are refused.
2112
2105
  */
2113
- rpcTimeoutMs: number;
2106
+ headers: Map<string, string>;
2114
2107
  /**
2115
- * Bounds the initial connection setup, so an unreachable signer fails fast rather than
2116
- * waiting out the OS SYN timeout.
2108
+ * Bounds one signer RPC, or how long a mark may wait for the next byte; the service's own
2109
+ * limit bounds a whole mark. Default 30 s.
2117
2110
  */
2118
- connectTimeoutMs: number;
2111
+ rpcTimeout?: number;
2112
+ /**
2113
+ * Bounds opening the connection. Default 5 s.
2114
+ */
2115
+ connectTimeout?: number;
2119
2116
  };
2120
2117
  /**
2121
2118
  * Generated factory for {@link ConnectOptions} record objects.
2122
2119
  */
2123
2120
  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;
2121
+ create: (partial: Partial<ConnectOptions> & Required<Omit<ConnectOptions, "connectTimeout" | "headers" | "rpcTimeout">>) => ConnectOptions;
2122
+ new: (partial: Partial<ConnectOptions> & Required<Omit<ConnectOptions, "connectTimeout" | "headers" | "rpcTimeout">>) => ConnectOptions;
2126
2123
  defaults: () => Partial<ConnectOptions>;
2127
2124
  }>;
2128
2125
  /**
2129
- * Everything one [`Binder::derive`] needs beyond the asset.
2126
+ * What one [`embed`] is told beyond the sink, the sidecar and the plugins.
2130
2127
  */
2131
- export type DeriveOptions = {
2132
- format: AssetFormat;
2128
+ export type EmbedOptions = {
2129
+ /**
2130
+ * The asset's media type; `None` reads it from the sink's leading bytes.
2131
+ */
2132
+ format?: string;
2133
+ /**
2134
+ * Optional native format libraries, loaded before composition.
2135
+ */
2136
+ modules: Array<string>;
2133
2137
  };
2134
2138
  /**
2135
- * Generated factory for {@link DeriveOptions} record objects.
2139
+ * Generated factory for {@link EmbedOptions} record objects.
2136
2140
  */
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>;
2141
+ export declare const EmbedOptions: Readonly<{
2142
+ create: (partial: Partial<EmbedOptions> & Required<Omit<EmbedOptions, "format" | "modules">>) => EmbedOptions;
2143
+ new: (partial: Partial<EmbedOptions> & Required<Omit<EmbedOptions, "format" | "modules">>) => EmbedOptions;
2144
+ defaults: () => Partial<EmbedOptions>;
2141
2145
  }>;
2142
2146
  /**
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.
2147
+ * Where a stream's init manifest lives. The init segment always carries it, so there is no
2148
+ * remote-only delivery, and the segment comes back as bytes, so there is no output to name.
2145
2149
  */
2146
- export type EmbedOptions = {
2147
- format: AssetFormat;
2150
+ export declare enum StreamDelivery {
2151
+ Embedded = 0,
2152
+ EmbeddedAndRemote = 1
2153
+ }
2154
+ /**
2155
+ * How long a session key signs, and when to rotate it.
2156
+ */
2157
+ export type RotationPolicy = {
2158
+ /**
2159
+ * From the key's creation, in whole seconds (C2PA `validityPeriod`); the verifier refuses
2160
+ * a segment signed after it.
2161
+ */
2162
+ validityPeriod: number;
2163
+ /**
2164
+ * The share of `validity_period`, 1 to 100, after which `rotation_due` is set.
2165
+ */
2166
+ refreshPercent: number;
2148
2167
  };
2149
2168
  /**
2150
- * Generated factory for {@link EmbedOptions} record objects.
2169
+ * Generated factory for {@link RotationPolicy} record objects.
2151
2170
  */
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>;
2171
+ export declare const RotationPolicy: Readonly<{
2172
+ create: (partial: Partial<RotationPolicy> & Required<Omit<RotationPolicy, never>>) => RotationPolicy;
2173
+ new: (partial: Partial<RotationPolicy> & Required<Omit<RotationPolicy, never>>) => RotationPolicy;
2174
+ defaults: () => Partial<RotationPolicy>;
2156
2175
  }>;
2157
2176
  /**
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.
2177
+ * Computes one soft-binding algorithm's values from an asset (a fingerprint calculated, a
2178
+ * watermark detected). `[]` is "no value here"; an error is "no trustworthy answer", so a failed
2179
+ * engine never reads as an unmarked asset.
2167
2180
  */
2168
- export interface Binder {
2169
- derive(source: RangeSource, options: DeriveOptions, asyncOpts_?: {
2181
+ export interface Compute {
2182
+ /**
2183
+ * The C2PA soft-binding algorithm list label, e.g. `io.iscc.v0`.
2184
+ */
2185
+ alg(): string;
2186
+ compute(request: ComputeRequest, asyncOpts_?: {
2170
2187
  signal: AbortSignal;
2171
- }): Promise<SoftBinding | undefined>;
2188
+ }): Promise<Array<Block>>;
2172
2189
  }
2173
2190
  /**
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.
2191
+ * Computes one soft-binding algorithm's values from an asset (a fingerprint calculated, a
2192
+ * watermark detected). `[]` is "no value here"; an error is "no trustworthy answer", so a failed
2193
+ * engine never reads as an unmarked asset.
2183
2194
  */
2184
- export declare class BinderImpl extends UniffiAbstractObject implements Binder {
2185
- readonly [uniffiTypeNameSymbol] = "BinderImpl";
2195
+ export declare class ComputeImpl extends UniffiAbstractObject implements Compute {
2196
+ readonly [uniffiTypeNameSymbol] = "ComputeImpl";
2186
2197
  readonly [destructorGuardSymbol]: UniffiGcObject;
2187
2198
  readonly [pointerLiteralSymbol]: UniffiHandle;
2188
2199
  private constructor();
2189
- derive(source: RangeSource, options: DeriveOptions, asyncOpts_?: {
2200
+ /**
2201
+ * The C2PA soft-binding algorithm list label, e.g. `io.iscc.v0`.
2202
+ */
2203
+ alg(): string;
2204
+ compute(request: ComputeRequest, asyncOpts_?: {
2190
2205
  signal: AbortSignal;
2191
- }): Promise<SoftBinding | undefined>;
2206
+ }): Promise<Array<Block>>;
2192
2207
  uniffiDestroy(): void;
2193
- static instanceOf(obj_: any): obj_ is BinderImpl;
2208
+ static instanceOf(obj_: any): obj_ is ComputeImpl;
2194
2209
  }
2195
- export declare enum StreamDelivery_Tags {
2196
- Embedded = "Embedded",
2197
- Remote = "Remote",
2198
- Both = "Both"
2210
+ export declare enum SoftBindingSource_Tags {
2211
+ Builtin = "Builtin",
2212
+ Held = "Held",
2213
+ Custom = "Custom"
2199
2214
  }
2200
2215
  /**
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.
2216
+ * Where one assertion's values come from.
2203
2217
  */
2204
- export declare const StreamDelivery: Readonly<{
2205
- instanceOf: (obj: any) => obj is StreamDelivery;
2206
- Embedded: {
2218
+ export declare const SoftBindingSource: Readonly<{
2219
+ instanceOf: (obj: any) => obj is SoftBindingSource;
2220
+ Builtin: {
2207
2221
  new (inner: {
2208
- binders: Array<Binder>;
2222
+ alg: string;
2209
2223
  }): {
2210
2224
  /**
2211
2225
  * @private
2212
2226
  * This field is private and should not be used, use `tag` instead.
2213
2227
  */
2214
- readonly [uniffiTypeNameSymbol]: "StreamDelivery";
2215
- readonly tag: StreamDelivery_Tags.Embedded;
2228
+ readonly [uniffiTypeNameSymbol]: "SoftBindingSource";
2229
+ readonly tag: SoftBindingSource_Tags.Builtin;
2216
2230
  readonly inner: Readonly<{
2217
- binders: Array<Binder>;
2231
+ alg: string;
2218
2232
  }>;
2219
2233
  };
2220
2234
  "new"(inner: {
2221
- binders: Array<Binder>;
2235
+ alg: string;
2222
2236
  }): {
2223
2237
  /**
2224
2238
  * @private
2225
2239
  * This field is private and should not be used, use `tag` instead.
2226
2240
  */
2227
- readonly [uniffiTypeNameSymbol]: "StreamDelivery";
2228
- readonly tag: StreamDelivery_Tags.Embedded;
2241
+ readonly [uniffiTypeNameSymbol]: "SoftBindingSource";
2242
+ readonly tag: SoftBindingSource_Tags.Builtin;
2229
2243
  readonly inner: Readonly<{
2230
- binders: Array<Binder>;
2244
+ alg: string;
2231
2245
  }>;
2232
2246
  };
2233
2247
  instanceOf(obj: any): obj is {
@@ -2235,38 +2249,38 @@ export declare const StreamDelivery: Readonly<{
2235
2249
  * @private
2236
2250
  * This field is private and should not be used, use `tag` instead.
2237
2251
  */
2238
- readonly [uniffiTypeNameSymbol]: "StreamDelivery";
2239
- readonly tag: StreamDelivery_Tags.Embedded;
2252
+ readonly [uniffiTypeNameSymbol]: "SoftBindingSource";
2253
+ readonly tag: SoftBindingSource_Tags.Builtin;
2240
2254
  readonly inner: Readonly<{
2241
- binders: Array<Binder>;
2255
+ alg: string;
2242
2256
  }>;
2243
2257
  };
2244
2258
  };
2245
- Remote: {
2259
+ Held: {
2246
2260
  new (inner: {
2247
- binders: Array<Binder>;
2261
+ binding: SoftBinding;
2248
2262
  }): {
2249
2263
  /**
2250
2264
  * @private
2251
2265
  * This field is private and should not be used, use `tag` instead.
2252
2266
  */
2253
- readonly [uniffiTypeNameSymbol]: "StreamDelivery";
2254
- readonly tag: StreamDelivery_Tags.Remote;
2267
+ readonly [uniffiTypeNameSymbol]: "SoftBindingSource";
2268
+ readonly tag: SoftBindingSource_Tags.Held;
2255
2269
  readonly inner: Readonly<{
2256
- binders: Array<Binder>;
2270
+ binding: SoftBinding;
2257
2271
  }>;
2258
2272
  };
2259
2273
  "new"(inner: {
2260
- binders: Array<Binder>;
2274
+ binding: SoftBinding;
2261
2275
  }): {
2262
2276
  /**
2263
2277
  * @private
2264
2278
  * This field is private and should not be used, use `tag` instead.
2265
2279
  */
2266
- readonly [uniffiTypeNameSymbol]: "StreamDelivery";
2267
- readonly tag: StreamDelivery_Tags.Remote;
2280
+ readonly [uniffiTypeNameSymbol]: "SoftBindingSource";
2281
+ readonly tag: SoftBindingSource_Tags.Held;
2268
2282
  readonly inner: Readonly<{
2269
- binders: Array<Binder>;
2283
+ binding: SoftBinding;
2270
2284
  }>;
2271
2285
  };
2272
2286
  instanceOf(obj: any): obj is {
@@ -2274,38 +2288,38 @@ export declare const StreamDelivery: Readonly<{
2274
2288
  * @private
2275
2289
  * This field is private and should not be used, use `tag` instead.
2276
2290
  */
2277
- readonly [uniffiTypeNameSymbol]: "StreamDelivery";
2278
- readonly tag: StreamDelivery_Tags.Remote;
2291
+ readonly [uniffiTypeNameSymbol]: "SoftBindingSource";
2292
+ readonly tag: SoftBindingSource_Tags.Held;
2279
2293
  readonly inner: Readonly<{
2280
- binders: Array<Binder>;
2294
+ binding: SoftBinding;
2281
2295
  }>;
2282
2296
  };
2283
2297
  };
2284
- Both: {
2298
+ Custom: {
2285
2299
  new (inner: {
2286
- binders: Array<Binder>;
2300
+ compute: Compute;
2287
2301
  }): {
2288
2302
  /**
2289
2303
  * @private
2290
2304
  * This field is private and should not be used, use `tag` instead.
2291
2305
  */
2292
- readonly [uniffiTypeNameSymbol]: "StreamDelivery";
2293
- readonly tag: StreamDelivery_Tags.Both;
2306
+ readonly [uniffiTypeNameSymbol]: "SoftBindingSource";
2307
+ readonly tag: SoftBindingSource_Tags.Custom;
2294
2308
  readonly inner: Readonly<{
2295
- binders: Array<Binder>;
2309
+ compute: Compute;
2296
2310
  }>;
2297
2311
  };
2298
2312
  "new"(inner: {
2299
- binders: Array<Binder>;
2313
+ compute: Compute;
2300
2314
  }): {
2301
2315
  /**
2302
2316
  * @private
2303
2317
  * This field is private and should not be used, use `tag` instead.
2304
2318
  */
2305
- readonly [uniffiTypeNameSymbol]: "StreamDelivery";
2306
- readonly tag: StreamDelivery_Tags.Both;
2319
+ readonly [uniffiTypeNameSymbol]: "SoftBindingSource";
2320
+ readonly tag: SoftBindingSource_Tags.Custom;
2307
2321
  readonly inner: Readonly<{
2308
- binders: Array<Binder>;
2322
+ compute: Compute;
2309
2323
  }>;
2310
2324
  };
2311
2325
  instanceOf(obj: any): obj is {
@@ -2313,63 +2327,42 @@ export declare const StreamDelivery: Readonly<{
2313
2327
  * @private
2314
2328
  * This field is private and should not be used, use `tag` instead.
2315
2329
  */
2316
- readonly [uniffiTypeNameSymbol]: "StreamDelivery";
2317
- readonly tag: StreamDelivery_Tags.Both;
2330
+ readonly [uniffiTypeNameSymbol]: "SoftBindingSource";
2331
+ readonly tag: SoftBindingSource_Tags.Custom;
2318
2332
  readonly inner: Readonly<{
2319
- binders: Array<Binder>;
2333
+ compute: Compute;
2320
2334
  }>;
2321
2335
  };
2322
2336
  };
2323
2337
  }>;
2324
2338
  /**
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.
2339
+ * Where one assertion's values come from.
2327
2340
  */
2328
- export type StreamDelivery = InstanceType<typeof StreamDelivery['Embedded' | 'Remote' | 'Both']>;
2341
+ export type SoftBindingSource = InstanceType<typeof SoftBindingSource['Builtin' | 'Held' | 'Custom']>;
2329
2342
  /**
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
- }>;
2350
- /**
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.
2343
+ * Options for a stream's `init` and `rotate`: where the init manifest lives, the session-key
2344
+ * validity window, and the soft bindings declared for the init segment.
2353
2345
  */
2354
2346
  export type InitOptions = {
2355
2347
  delivery: StreamDelivery;
2356
2348
  rotationPolicy: RotationPolicy;
2349
+ softBindings: Array<SoftBindingSource>;
2357
2350
  };
2358
2351
  /**
2359
2352
  * Generated factory for {@link InitOptions} record objects.
2360
2353
  */
2361
2354
  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;
2355
+ create: (partial: Partial<InitOptions> & Required<Omit<InitOptions, "softBindings">>) => InitOptions;
2356
+ new: (partial: Partial<InitOptions> & Required<Omit<InitOptions, "softBindings">>) => InitOptions;
2364
2357
  defaults: () => Partial<InitOptions>;
2365
2358
  }>;
2366
2359
  /**
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.
2360
+ * Result of [`StreamIssuer::init`](super::StreamIssuer::init): the signed init segment, and when
2361
+ * its session key stops signing.
2369
2362
  */
2370
2363
  export type InitOutcome = {
2371
- signedInitBytes: ArrayBuffer;
2372
- validUntilEpochSecs: bigint;
2364
+ bytes: ArrayBuffer;
2365
+ validUntil: Date;
2373
2366
  };
2374
2367
  /**
2375
2368
  * Generated factory for {@link InitOutcome} record objects.
@@ -2380,52 +2373,39 @@ export declare const InitOutcome: Readonly<{
2380
2373
  defaults: () => Partial<InitOutcome>;
2381
2374
  }>;
2382
2375
  /**
2383
- * Everything one [`AssetMarker::mark`] needs beyond the asset, every field stated.
2376
+ * What one [`AssetMarker::mark`] is told beyond the asset.
2384
2377
  */
2385
2378
  export type MarkOptions = {
2386
2379
  /**
2387
- * How the asset's format is known.
2380
+ * The asset's media type; `None` reads it from the leading bytes.
2388
2381
  */
2389
- format: AssetFormat;
2382
+ format?: string;
2390
2383
  /**
2391
- * Filename recorded with the mark, and the multipart part name.
2384
+ * The watermarks to insert, as algorithm list labels; `[]` inserts every one the
2385
+ * deployment offers, in its order.
2392
2386
  */
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;
2387
+ algorithms: Array<string>;
2399
2388
  };
2400
2389
  /**
2401
2390
  * Generated factory for {@link MarkOptions} record objects.
2402
2391
  */
2403
2392
  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;
2393
+ create: (partial: Partial<MarkOptions> & Required<Omit<MarkOptions, "algorithms" | "format">>) => MarkOptions;
2394
+ new: (partial: Partial<MarkOptions> & Required<Omit<MarkOptions, "algorithms" | "format">>) => MarkOptions;
2406
2395
  defaults: () => Partial<MarkOptions>;
2407
2396
  }>;
2408
2397
  /**
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`].
2398
+ * Result of [`AssetMarker::mark`](super::AssetMarker::mark), whose marked asset went into its
2399
+ * sink.
2412
2400
  */
2413
2401
  export type MarkOutcome = {
2414
2402
  /**
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.
2403
+ * The marked asset's media type, which a watermark service may change by re-encoding.
2420
2404
  */
2421
2405
  format: string;
2422
2406
  /**
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`.
2407
+ * One `c2pa.watermarked.bound` or `.unbound` per mark, in the order inserted. Append them to
2408
+ * the manifest's `actions`.
2429
2409
  */
2430
2410
  actions: Array<Action>;
2431
2411
  };
@@ -2438,32 +2418,28 @@ export declare const MarkOutcome: Readonly<{
2438
2418
  defaults: () => Partial<MarkOutcome>;
2439
2419
  }>;
2440
2420
  /**
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.
2421
+ * What a [`SigningVault::mint`] is asked: how long the key will be signed under, so the vault can
2422
+ * give it that lifetime and expire it itself; a key no `forget` reaches then dies where it is held.
2444
2423
  */
2445
- export type Region = {
2446
- offset: bigint;
2447
- length: bigint;
2424
+ export type MintRequest = {
2425
+ validityPeriod: number;
2448
2426
  };
2449
2427
  /**
2450
- * Generated factory for {@link Region} record objects.
2428
+ * Generated factory for {@link MintRequest} record objects.
2451
2429
  */
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>;
2430
+ export declare const MintRequest: Readonly<{
2431
+ create: (partial: Partial<MintRequest> & Required<Omit<MintRequest, never>>) => MintRequest;
2432
+ new: (partial: Partial<MintRequest> & Required<Omit<MintRequest, never>>) => MintRequest;
2433
+ defaults: () => Partial<MintRequest>;
2456
2434
  }>;
2457
2435
  /**
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.
2436
+ * Result of [`StreamSession::sign`](super::StreamSession::sign). `valid_until` repeats per
2437
+ * segment so a caller can schedule the rotation rather than only react to `rotation_due`.
2462
2438
  */
2463
2439
  export type SegmentOutcome = {
2464
2440
  bytes: ArrayBuffer;
2465
2441
  rotationDue: boolean;
2466
- validUntilEpochSecs: bigint;
2442
+ validUntil: Date;
2467
2443
  };
2468
2444
  /**
2469
2445
  * Generated factory for {@link SegmentOutcome} record objects.
@@ -2473,6 +2449,23 @@ export declare const SegmentOutcome: Readonly<{
2473
2449
  new: (partial: Partial<SegmentOutcome> & Required<Omit<SegmentOutcome, never>>) => SegmentOutcome;
2474
2450
  defaults: () => Partial<SegmentOutcome>;
2475
2451
  }>;
2452
+ /**
2453
+ * A minted session key's public half. `kid` is the vault's handle for it (typically SHA-256 of
2454
+ * the public key); `public_key` is the uncompressed SEC1 point (65 bytes from `0x04` for ES256),
2455
+ * which the SDK wraps as a `COSE_Key` (C2PA 2.4 19.4.4).
2456
+ */
2457
+ export type SessionKey = {
2458
+ kid: ArrayBuffer;
2459
+ publicKey: ArrayBuffer;
2460
+ };
2461
+ /**
2462
+ * Generated factory for {@link SessionKey} record objects.
2463
+ */
2464
+ export declare const SessionKey: Readonly<{
2465
+ create: (partial: Partial<SessionKey> & Required<Omit<SessionKey, never>>) => SessionKey;
2466
+ new: (partial: Partial<SessionKey> & Required<Omit<SessionKey, never>>) => SessionKey;
2467
+ defaults: () => Partial<SessionKey>;
2468
+ }>;
2476
2469
  /**
2477
2470
  * A ranged read+write backend for embedding. All four methods are first-class (UniFFI
2478
2471
  * has no trait inheritance for foreign callbacks, so the read half is duplicated from
@@ -2534,10 +2527,9 @@ export declare enum SignOutput_Tags {
2534
2527
  Asset = "Asset"
2535
2528
  }
2536
2529
  /**
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.
2530
+ * What a `sign` hands back beyond the sidecar it always returns: the sidecar alone, or the whole
2531
+ * signed asset written into `into` in the same call, replacing what it held. See the core
2532
+ * [`SignOutput`](core::SignOutput) for what pointing `into` at the asset's own storage means.
2541
2533
  */
2542
2534
  export declare const SignOutput: Readonly<{
2543
2535
  instanceOf: (obj: any) => obj is SignOutput;
@@ -2608,30 +2600,27 @@ export declare const SignOutput: Readonly<{
2608
2600
  };
2609
2601
  }>;
2610
2602
  /**
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.
2603
+ * What a `sign` hands back beyond the sidecar it always returns: the sidecar alone, or the whole
2604
+ * signed asset written into `into` in the same call, replacing what it held. See the core
2605
+ * [`SignOutput`](core::SignOutput) for what pointing `into` at the asset's own storage means.
2615
2606
  */
2616
2607
  export type SignOutput = InstanceType<typeof SignOutput['Sidecar' | 'Asset']>;
2617
2608
  export declare enum AssetDelivery_Tags {
2618
2609
  Embedded = "Embedded",
2619
2610
  Remote = "Remote",
2620
- Both = "Both"
2611
+ EmbeddedAndRemote = "EmbeddedAndRemote"
2621
2612
  }
2622
2613
  /**
2623
- * How a static asset's manifest is delivered, which binders it declares, and what comes back.
2614
+ * Where a static asset's manifest lives and, when it is in the asset, what comes back.
2624
2615
  *
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.
2616
+ * Embedded manifests are not indexed, so a watermark on one is refused: it could never lead back
2617
+ * to the manifest. Remote needs a soft binding the deployment resolves and never touches the
2618
+ * asset, so it names no output.
2629
2619
  */
2630
2620
  export declare const AssetDelivery: Readonly<{
2631
2621
  instanceOf: (obj: any) => obj is AssetDelivery;
2632
2622
  Embedded: {
2633
2623
  new (inner: {
2634
- binders: Array<Binder>;
2635
2624
  output: SignOutput;
2636
2625
  }): {
2637
2626
  /**
@@ -2641,12 +2630,10 @@ export declare const AssetDelivery: Readonly<{
2641
2630
  readonly [uniffiTypeNameSymbol]: "AssetDelivery";
2642
2631
  readonly tag: AssetDelivery_Tags.Embedded;
2643
2632
  readonly inner: Readonly<{
2644
- binders: Array<Binder>;
2645
2633
  output: SignOutput;
2646
2634
  }>;
2647
2635
  };
2648
2636
  "new"(inner: {
2649
- binders: Array<Binder>;
2650
2637
  output: SignOutput;
2651
2638
  }): {
2652
2639
  /**
@@ -2656,7 +2643,6 @@ export declare const AssetDelivery: Readonly<{
2656
2643
  readonly [uniffiTypeNameSymbol]: "AssetDelivery";
2657
2644
  readonly tag: AssetDelivery_Tags.Embedded;
2658
2645
  readonly inner: Readonly<{
2659
- binders: Array<Binder>;
2660
2646
  output: SignOutput;
2661
2647
  }>;
2662
2648
  };
@@ -2668,37 +2654,26 @@ export declare const AssetDelivery: Readonly<{
2668
2654
  readonly [uniffiTypeNameSymbol]: "AssetDelivery";
2669
2655
  readonly tag: AssetDelivery_Tags.Embedded;
2670
2656
  readonly inner: Readonly<{
2671
- binders: Array<Binder>;
2672
2657
  output: SignOutput;
2673
2658
  }>;
2674
2659
  };
2675
2660
  };
2676
2661
  Remote: {
2677
- new (inner: {
2678
- binders: Array<Binder>;
2679
- }): {
2662
+ new (): {
2680
2663
  /**
2681
2664
  * @private
2682
2665
  * This field is private and should not be used, use `tag` instead.
2683
2666
  */
2684
2667
  readonly [uniffiTypeNameSymbol]: "AssetDelivery";
2685
2668
  readonly tag: AssetDelivery_Tags.Remote;
2686
- readonly inner: Readonly<{
2687
- binders: Array<Binder>;
2688
- }>;
2689
2669
  };
2690
- "new"(inner: {
2691
- binders: Array<Binder>;
2692
- }): {
2670
+ "new"(): {
2693
2671
  /**
2694
2672
  * @private
2695
2673
  * This field is private and should not be used, use `tag` instead.
2696
2674
  */
2697
2675
  readonly [uniffiTypeNameSymbol]: "AssetDelivery";
2698
2676
  readonly tag: AssetDelivery_Tags.Remote;
2699
- readonly inner: Readonly<{
2700
- binders: Array<Binder>;
2701
- }>;
2702
2677
  };
2703
2678
  instanceOf(obj: any): obj is {
2704
2679
  /**
@@ -2707,14 +2682,10 @@ export declare const AssetDelivery: Readonly<{
2707
2682
  */
2708
2683
  readonly [uniffiTypeNameSymbol]: "AssetDelivery";
2709
2684
  readonly tag: AssetDelivery_Tags.Remote;
2710
- readonly inner: Readonly<{
2711
- binders: Array<Binder>;
2712
- }>;
2713
2685
  };
2714
2686
  };
2715
- Both: {
2687
+ EmbeddedAndRemote: {
2716
2688
  new (inner: {
2717
- binders: Array<Binder>;
2718
2689
  output: SignOutput;
2719
2690
  }): {
2720
2691
  /**
@@ -2722,14 +2693,12 @@ export declare const AssetDelivery: Readonly<{
2722
2693
  * This field is private and should not be used, use `tag` instead.
2723
2694
  */
2724
2695
  readonly [uniffiTypeNameSymbol]: "AssetDelivery";
2725
- readonly tag: AssetDelivery_Tags.Both;
2696
+ readonly tag: AssetDelivery_Tags.EmbeddedAndRemote;
2726
2697
  readonly inner: Readonly<{
2727
- binders: Array<Binder>;
2728
2698
  output: SignOutput;
2729
2699
  }>;
2730
2700
  };
2731
2701
  "new"(inner: {
2732
- binders: Array<Binder>;
2733
2702
  output: SignOutput;
2734
2703
  }): {
2735
2704
  /**
@@ -2737,9 +2706,8 @@ export declare const AssetDelivery: Readonly<{
2737
2706
  * This field is private and should not be used, use `tag` instead.
2738
2707
  */
2739
2708
  readonly [uniffiTypeNameSymbol]: "AssetDelivery";
2740
- readonly tag: AssetDelivery_Tags.Both;
2709
+ readonly tag: AssetDelivery_Tags.EmbeddedAndRemote;
2741
2710
  readonly inner: Readonly<{
2742
- binders: Array<Binder>;
2743
2711
  output: SignOutput;
2744
2712
  }>;
2745
2713
  };
@@ -2749,48 +2717,51 @@ export declare const AssetDelivery: Readonly<{
2749
2717
  * This field is private and should not be used, use `tag` instead.
2750
2718
  */
2751
2719
  readonly [uniffiTypeNameSymbol]: "AssetDelivery";
2752
- readonly tag: AssetDelivery_Tags.Both;
2720
+ readonly tag: AssetDelivery_Tags.EmbeddedAndRemote;
2753
2721
  readonly inner: Readonly<{
2754
- binders: Array<Binder>;
2755
2722
  output: SignOutput;
2756
2723
  }>;
2757
2724
  };
2758
2725
  };
2759
2726
  }>;
2760
2727
  /**
2761
- * How a static asset's manifest is delivered, which binders it declares, and what comes back.
2728
+ * Where a static asset's manifest lives and, when it is in the asset, what comes back.
2762
2729
  *
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.
2730
+ * Embedded manifests are not indexed, so a watermark on one is refused: it could never lead back
2731
+ * to the manifest. Remote needs a soft binding the deployment resolves and never touches the
2732
+ * asset, so it names no output.
2767
2733
  */
2768
- export type AssetDelivery = InstanceType<typeof AssetDelivery['Embedded' | 'Remote' | 'Both']>;
2734
+ export type AssetDelivery = InstanceType<typeof AssetDelivery['Embedded' | 'Remote' | 'EmbeddedAndRemote']>;
2769
2735
  /**
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.
2736
+ * What one `sign` is told beyond the asset, its manifest and the plugins.
2773
2737
  */
2774
2738
  export type SignOptions = {
2775
2739
  delivery: AssetDelivery;
2776
- format: AssetFormat;
2740
+ /**
2741
+ * The asset's media type; `None` reads it from the leading bytes.
2742
+ */
2743
+ format?: string;
2744
+ /**
2745
+ * The claim thumbnail, rendered by the caller: the split signer never sees the asset.
2746
+ */
2777
2747
  thumbnail?: Thumbnail;
2748
+ softBindings: Array<SoftBindingSource>;
2778
2749
  };
2779
2750
  /**
2780
2751
  * Generated factory for {@link SignOptions} record objects.
2781
2752
  */
2782
2753
  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;
2754
+ create: (partial: Partial<SignOptions> & Required<Omit<SignOptions, "format" | "softBindings" | "thumbnail">>) => SignOptions;
2755
+ new: (partial: Partial<SignOptions> & Required<Omit<SignOptions, "format" | "softBindings" | "thumbnail">>) => SignOptions;
2785
2756
  defaults: () => Partial<SignOptions>;
2786
2757
  }>;
2787
2758
  /**
2788
2759
  * 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.
2760
+ * C2PA manifest id. `Remote` and `EmbeddedAndRemote` persist that id; `Embedded` does not.
2790
2761
  */
2791
2762
  export type SignOutcome = {
2792
2763
  /**
2793
- * The manifest sidecar to embed into the asset (see [`embed`](crate::ffi::embed)).
2764
+ * The manifest sidecar to embed into the asset (see `embed`).
2794
2765
  */
2795
2766
  sidecar: ArrayBuffer;
2796
2767
  /**
@@ -2806,23 +2777,23 @@ export declare const SignOutcome: Readonly<{
2806
2777
  new: (partial: Partial<SignOutcome> & Required<Omit<SignOutcome, never>>) => SignOutcome;
2807
2778
  defaults: () => Partial<SignOutcome>;
2808
2779
  }>;
2809
- export declare enum Origin_Tags {
2780
+ export declare enum StreamOrigin_Tags {
2810
2781
  Created = "Created",
2811
2782
  Opened = "Opened"
2812
2783
  }
2813
2784
  /**
2814
- * An origin a live stream states; see the core [`provenance::Origin`].
2785
+ * An origin a stream states; see the core [`provenance::StreamOrigin`].
2815
2786
  */
2816
- export declare const Origin: Readonly<{
2817
- instanceOf: (obj: any) => obj is Origin;
2787
+ export declare const StreamOrigin: Readonly<{
2788
+ instanceOf: (obj: any) => obj is StreamOrigin;
2818
2789
  Created: {
2819
2790
  new (v0: CreatedOrigin): {
2820
2791
  /**
2821
2792
  * @private
2822
2793
  * This field is private and should not be used, use `tag` instead.
2823
2794
  */
2824
- readonly [uniffiTypeNameSymbol]: "Origin";
2825
- readonly tag: Origin_Tags.Created;
2795
+ readonly [uniffiTypeNameSymbol]: "StreamOrigin";
2796
+ readonly tag: StreamOrigin_Tags.Created;
2826
2797
  readonly inner: Readonly<[CreatedOrigin]>;
2827
2798
  };
2828
2799
  "new"(v0: CreatedOrigin): {
@@ -2830,8 +2801,8 @@ export declare const Origin: Readonly<{
2830
2801
  * @private
2831
2802
  * This field is private and should not be used, use `tag` instead.
2832
2803
  */
2833
- readonly [uniffiTypeNameSymbol]: "Origin";
2834
- readonly tag: Origin_Tags.Created;
2804
+ readonly [uniffiTypeNameSymbol]: "StreamOrigin";
2805
+ readonly tag: StreamOrigin_Tags.Created;
2835
2806
  readonly inner: Readonly<[CreatedOrigin]>;
2836
2807
  };
2837
2808
  instanceOf(obj: any): obj is {
@@ -2839,8 +2810,8 @@ export declare const Origin: Readonly<{
2839
2810
  * @private
2840
2811
  * This field is private and should not be used, use `tag` instead.
2841
2812
  */
2842
- readonly [uniffiTypeNameSymbol]: "Origin";
2843
- readonly tag: Origin_Tags.Created;
2813
+ readonly [uniffiTypeNameSymbol]: "StreamOrigin";
2814
+ readonly tag: StreamOrigin_Tags.Created;
2844
2815
  readonly inner: Readonly<[CreatedOrigin]>;
2845
2816
  };
2846
2817
  };
@@ -2850,8 +2821,8 @@ export declare const Origin: Readonly<{
2850
2821
  * @private
2851
2822
  * This field is private and should not be used, use `tag` instead.
2852
2823
  */
2853
- readonly [uniffiTypeNameSymbol]: "Origin";
2854
- readonly tag: Origin_Tags.Opened;
2824
+ readonly [uniffiTypeNameSymbol]: "StreamOrigin";
2825
+ readonly tag: StreamOrigin_Tags.Opened;
2855
2826
  readonly inner: Readonly<[OpenedOrigin]>;
2856
2827
  };
2857
2828
  "new"(v0: OpenedOrigin): {
@@ -2859,8 +2830,8 @@ export declare const Origin: Readonly<{
2859
2830
  * @private
2860
2831
  * This field is private and should not be used, use `tag` instead.
2861
2832
  */
2862
- readonly [uniffiTypeNameSymbol]: "Origin";
2863
- readonly tag: Origin_Tags.Opened;
2833
+ readonly [uniffiTypeNameSymbol]: "StreamOrigin";
2834
+ readonly tag: StreamOrigin_Tags.Opened;
2864
2835
  readonly inner: Readonly<[OpenedOrigin]>;
2865
2836
  };
2866
2837
  instanceOf(obj: any): obj is {
@@ -2868,62 +2839,73 @@ export declare const Origin: Readonly<{
2868
2839
  * @private
2869
2840
  * This field is private and should not be used, use `tag` instead.
2870
2841
  */
2871
- readonly [uniffiTypeNameSymbol]: "Origin";
2872
- readonly tag: Origin_Tags.Opened;
2842
+ readonly [uniffiTypeNameSymbol]: "StreamOrigin";
2843
+ readonly tag: StreamOrigin_Tags.Opened;
2873
2844
  readonly inner: Readonly<[OpenedOrigin]>;
2874
2845
  };
2875
2846
  };
2876
2847
  }>;
2877
2848
  /**
2878
- * An origin a live stream states; see the core [`provenance::Origin`].
2849
+ * An origin a stream states; see the core [`provenance::StreamOrigin`].
2879
2850
  */
2880
- export type Origin = InstanceType<typeof Origin['Created' | 'Opened']>;
2851
+ export type StreamOrigin = InstanceType<typeof StreamOrigin['Created' | 'Opened']>;
2881
2852
  /**
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.
2853
+ * The manifest a stream's init segment is signed with: the asset spec's twin whose origin is a
2854
+ * [`StreamOrigin`], since an init segment has no store the SDK opens as the parent.
2884
2855
  */
2885
2856
  export type StreamManifestSpec = {
2886
2857
  title?: string;
2887
- origin: Origin;
2858
+ origin: StreamOrigin;
2859
+ /**
2860
+ * Every action performed on the asset; the manifest states the list is complete (C2PA
2861
+ * `allActionsIncluded`).
2862
+ */
2888
2863
  actions: Array<Action>;
2889
2864
  identity?: Identity;
2890
2865
  assertions: Array<Assertion>;
2891
- components: Array<Component>;
2866
+ /**
2867
+ * Keyed by the handle actions name them by.
2868
+ */
2869
+ components: Map<string, Component>;
2892
2870
  };
2893
2871
  /**
2894
2872
  * Generated factory for {@link StreamManifestSpec} record objects.
2895
2873
  */
2896
2874
  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;
2875
+ create: (partial: Partial<StreamManifestSpec> & Required<Omit<StreamManifestSpec, "actions" | "assertions" | "components" | "identity" | "title">>) => StreamManifestSpec;
2876
+ new: (partial: Partial<StreamManifestSpec> & Required<Omit<StreamManifestSpec, "actions" | "assertions" | "components" | "identity" | "title">>) => StreamManifestSpec;
2899
2877
  defaults: () => Partial<StreamManifestSpec>;
2900
2878
  }>;
2901
2879
  /**
2902
- * One live stream, from `init` to `stop`.
2880
+ * One stream, from `init` to `stop` or `rotate`.
2903
2881
  *
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.
2882
+ * Carries the whole per-stream state, so it cannot be mistyped or confused with another
2883
+ * stream's: every call after `init` goes through the handle that started it, and nothing about
2884
+ * the stream ever appears in a caller's argument list again. Once `stop` or a `rotate` succeeds
2885
+ * it refuses every call.
2907
2886
  */
2908
2887
  export interface StreamSessionLike {
2909
2888
  /**
2910
2889
  * Sign one media (moof) segment from a [`RangeSource`]. Does not touch the signer channel;
2911
2890
  * works through a signer outage. `rotation_due` flips when the key validity threshold
2912
- * passes; re-`init` on the issuer to rotate.
2891
+ * passes; then call `StreamIssuer.rotate` with this session.
2913
2892
  *
2914
2893
  * # Errors
2915
2894
  *
2916
- * Fails on a vault error, or a segment that isn't a BMFF media segment.
2895
+ * Fails on a vault error, a segment that isn't a BMFF media segment, or with
2896
+ * `FAILED_PRECONDITION` (`SESSION_ENDED`) after `stop` or a `rotate`.
2917
2897
  */
2918
- sign(body: RangeSource, asyncOpts_?: {
2898
+ sign(source: RangeSource, asyncOpts_?: {
2919
2899
  signal: AbortSignal;
2920
2900
  }): Promise<SegmentOutcome>;
2921
2901
  /**
2922
- * End the stream: forget its session key, so nothing can sign under it again.
2902
+ * End the stream: forget its session key, so nothing can sign under it again. Idempotent:
2903
+ * stopping an ended session succeeds. A failed stop can be retried.
2923
2904
  *
2924
2905
  * # Errors
2925
2906
  *
2926
- * Fails on a vault error.
2907
+ * Fails on a vault error, or with `FAILED_PRECONDITION` (`SESSION_ENDED`) with another
2908
+ * `stop` or `rotate` in flight.
2927
2909
  */
2928
2910
  stop(asyncOpts_?: {
2929
2911
  signal: AbortSignal;
@@ -2934,11 +2916,12 @@ export interface StreamSessionLike {
2934
2916
  */
2935
2917
  export type StreamSessionInterface = StreamSessionLike;
2936
2918
  /**
2937
- * One live stream, from `init` to `stop`.
2919
+ * One stream, from `init` to `stop` or `rotate`.
2938
2920
  *
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.
2921
+ * Carries the whole per-stream state, so it cannot be mistyped or confused with another
2922
+ * stream's: every call after `init` goes through the handle that started it, and nothing about
2923
+ * the stream ever appears in a caller's argument list again. Once `stop` or a `rotate` succeeds
2924
+ * it refuses every call.
2942
2925
  */
2943
2926
  export declare class StreamSession extends UniffiAbstractObject implements StreamSessionLike {
2944
2927
  readonly [uniffiTypeNameSymbol] = "StreamSession";
@@ -2948,21 +2931,24 @@ export declare class StreamSession extends UniffiAbstractObject implements Strea
2948
2931
  /**
2949
2932
  * Sign one media (moof) segment from a [`RangeSource`]. Does not touch the signer channel;
2950
2933
  * works through a signer outage. `rotation_due` flips when the key validity threshold
2951
- * passes; re-`init` on the issuer to rotate.
2934
+ * passes; then call `StreamIssuer.rotate` with this session.
2952
2935
  *
2953
2936
  * # Errors
2954
2937
  *
2955
- * Fails on a vault error, or a segment that isn't a BMFF media segment.
2938
+ * Fails on a vault error, a segment that isn't a BMFF media segment, or with
2939
+ * `FAILED_PRECONDITION` (`SESSION_ENDED`) after `stop` or a `rotate`.
2956
2940
  */
2957
- sign(body: RangeSource, asyncOpts_?: {
2941
+ sign(source: RangeSource, asyncOpts_?: {
2958
2942
  signal: AbortSignal;
2959
2943
  }): Promise<SegmentOutcome>;
2960
2944
  /**
2961
- * End the stream: forget its session key, so nothing can sign under it again.
2945
+ * End the stream: forget its session key, so nothing can sign under it again. Idempotent:
2946
+ * stopping an ended session succeeds. A failed stop can be retried.
2962
2947
  *
2963
2948
  * # Errors
2964
2949
  *
2965
- * Fails on a vault error.
2950
+ * Fails on a vault error, or with `FAILED_PRECONDITION` (`SESSION_ENDED`) with another
2951
+ * `stop` or `rotate` in flight.
2966
2952
  */
2967
2953
  stop(asyncOpts_?: {
2968
2954
  signal: AbortSignal;
@@ -2993,25 +2979,8 @@ export declare const StreamStart: Readonly<{
2993
2979
  defaults: () => Partial<StreamStart>;
2994
2980
  }>;
2995
2981
  /**
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.
2982
+ * Whether a fragmented-MP4 segment is the init (moov) or a media (moof) segment: whether it goes
2983
+ * to `StreamIssuer.init` or `StreamSession.sign`.
3015
2984
  */
3016
2985
  export declare enum SegmentKind {
3017
2986
  Init = 0,
@@ -3034,25 +3003,25 @@ export interface PluginAuthor {
3034
3003
  * Implement it correctly anyway, since the verify side dispatches on it and whatever
3035
3004
  * signs a format is eventually verified by it.
3036
3005
  */
3037
- sniff(src: RangeSource, asyncOpts_?: {
3006
+ sniff(source: RangeSource, asyncOpts_?: {
3038
3007
  signal: AbortSignal;
3039
3008
  }): Promise<string | undefined>;
3040
3009
  /**
3041
3010
  * The manifest window(s), or empty when none is present. MUST be byte-identical
3042
3011
  * regardless of slot contents; the sign driver enforces that with a round-trip.
3043
3012
  */
3044
- locate(src: RangeSource, asyncOpts_?: {
3013
+ locate(source: RangeSource, asyncOpts_?: {
3045
3014
  signal: AbortSignal;
3046
- }): Promise<Array<Region>>;
3015
+ }): Promise<Array<ByteRange>>;
3047
3016
  /**
3048
3017
  * 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
3050
- * content hash and writes the signed manifest into them, so the plugin never embeds
3051
- * and never re-locates.
3018
+ * `sink`, and return exactly where it landed. The core excludes those regions from the
3019
+ * content hash and writes the signed manifest into them, then checks that `locate`
3020
+ * still reports the same regions.
3052
3021
  */
3053
- reserveSlot(dst: RangeSink, reserve: bigint, asyncOpts_?: {
3022
+ reserveSlot(sink: RangeSink, reserve: bigint, asyncOpts_?: {
3054
3023
  signal: AbortSignal;
3055
- }): Promise<Array<Region>>;
3024
+ }): Promise<Array<ByteRange>>;
3056
3025
  }
3057
3026
  /**
3058
3027
  * A C2PA asset signer bound to a [`SignerClient`](super::client::SignerClient).
@@ -3060,16 +3029,14 @@ export interface PluginAuthor {
3060
3029
  */
3061
3030
  export interface AssetIssuerLike {
3062
3031
  /**
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.
3032
+ * Sign an asset from a [`RangeSource`], returning the sidecar and the active manifest's id.
3033
+ * `options.delivery` says where the manifest lives and, through its output, where the signed
3034
+ * asset is written. `plugins` resolves a caller-written format; see the module docs.
3068
3035
  *
3069
3036
  * # Errors
3070
3037
  *
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.
3038
+ * A format that is no media type, that the bytes contradict or that neither names; an RPC,
3039
+ * hashing, authoring or protocol failure.
3073
3040
  */
3074
3041
  sign(source: RangeSource, manifest: AssetManifestSpec, options: SignOptions, plugins: Array<PluginAuthor>, asyncOpts_?: {
3075
3042
  signal: AbortSignal;
@@ -3091,43 +3058,42 @@ export declare class AssetIssuer extends UniffiAbstractObject implements AssetIs
3091
3058
  /**
3092
3059
  * Build a signer over an existing signer connection.
3093
3060
  */
3094
- static create(client: SignerClientLike): AssetIssuerLike;
3061
+ static create(client: SignerClientLike, modules?: Array<string>): AssetIssuerLike;
3095
3062
  /**
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.
3063
+ * Sign an asset from a [`RangeSource`], returning the sidecar and the active manifest's id.
3064
+ * `options.delivery` says where the manifest lives and, through its output, where the signed
3065
+ * asset is written. `plugins` resolves a caller-written format; see the module docs.
3101
3066
  *
3102
3067
  * # Errors
3103
3068
  *
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.
3069
+ * A format that is no media type, that the bytes contradict or that neither names; an RPC,
3070
+ * hashing, authoring or protocol failure.
3106
3071
  */
3107
- sign(source: RangeSource, manifest: AssetManifestSpec, options: SignOptions, plugins: Array<PluginAuthor>, asyncOpts_?: {
3072
+ sign(source: RangeSource, manifest: AssetManifestSpec, options: SignOptions, plugins?: Array<PluginAuthor>, asyncOpts_?: {
3108
3073
  signal: AbortSignal;
3109
3074
  }): Promise<SignOutcome>;
3110
3075
  uniffiDestroy(): void;
3111
3076
  static instanceOf(obj_: any): obj_ is AssetIssuer;
3112
3077
  }
3113
3078
  /**
3114
- * Applies invisible watermarks through the deployment's marking service.
3079
+ * Inserts invisible watermarks through the deployment's marking route.
3115
3080
  *
3116
3081
  * 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.
3082
+ * happens before signing, and it returns the actions it owes the manifest.
3119
3083
  */
3120
3084
  export interface AssetMarkerLike {
3121
3085
  /**
3122
- * Mark an image from a [`RangeSource`] and return it with the actions the marking created,
3123
- * each bound one carrying its binding.
3086
+ * Mark an asset from a [`RangeSource`], writing the marked asset into `into` in place of
3087
+ * what it held, and return one `c2pa.watermarked.*` action per mark, in the order inserted.
3088
+ * Sign what `into` holds.
3124
3089
  *
3125
3090
  * # Errors
3126
3091
  *
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.
3092
+ * An unlisted algorithm, a format that is no media type or that the bytes contradict, an
3093
+ * asset above the upload ceiling, a source or sink that fails, or a marking route that
3094
+ * refused or answered out of contract.
3129
3095
  */
3130
- mark(source: RangeSource, options: MarkOptions, asyncOpts_?: {
3096
+ mark(source: RangeSource, into: RangeSink, options: MarkOptions, asyncOpts_?: {
3131
3097
  signal: AbortSignal;
3132
3098
  }): Promise<MarkOutcome>;
3133
3099
  }
@@ -3136,11 +3102,10 @@ export interface AssetMarkerLike {
3136
3102
  */
3137
3103
  export type AssetMarkerInterface = AssetMarkerLike;
3138
3104
  /**
3139
- * Applies invisible watermarks through the deployment's marking service.
3105
+ * Inserts invisible watermarks through the deployment's marking route.
3140
3106
  *
3141
3107
  * 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.
3108
+ * happens before signing, and it returns the actions it owes the manifest.
3144
3109
  */
3145
3110
  export declare class AssetMarker extends UniffiAbstractObject implements AssetMarkerLike {
3146
3111
  readonly [uniffiTypeNameSymbol] = "AssetMarker";
@@ -3152,15 +3117,17 @@ export declare class AssetMarker extends UniffiAbstractObject implements AssetMa
3152
3117
  */
3153
3118
  static create(client: SignerClientLike): AssetMarkerLike;
3154
3119
  /**
3155
- * Mark an image from a [`RangeSource`] and return it with the actions the marking created,
3156
- * each bound one carrying its binding.
3120
+ * Mark an asset from a [`RangeSource`], writing the marked asset into `into` in place of
3121
+ * what it held, and return one `c2pa.watermarked.*` action per mark, in the order inserted.
3122
+ * Sign what `into` holds.
3157
3123
  *
3158
3124
  * # Errors
3159
3125
  *
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.
3126
+ * An unlisted algorithm, a format that is no media type or that the bytes contradict, an
3127
+ * asset above the upload ceiling, a source or sink that fails, or a marking route that
3128
+ * refused or answered out of contract.
3162
3129
  */
3163
- mark(source: RangeSource, options: MarkOptions, asyncOpts_?: {
3130
+ mark(source: RangeSource, into: RangeSink, options: MarkOptions, asyncOpts_?: {
3164
3131
  signal: AbortSignal;
3165
3132
  }): Promise<MarkOutcome>;
3166
3133
  uniffiDestroy(): void;
@@ -3178,10 +3145,6 @@ export declare class AssetMarker extends UniffiAbstractObject implements AssetMa
3178
3145
  * That is what makes [`MemorySink`]'s ceiling stop applying: there is no byte array to count in an
3179
3146
  * `i32` and nothing resident, so a multi-GB master is signed at the disk's speed rather than the
3180
3147
  * 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
3148
  */
3186
3149
  export interface FileSinkLike {
3187
3150
  length(asyncOpts_?: {
@@ -3213,10 +3176,6 @@ export type FileSinkInterface = FileSinkLike;
3213
3176
  * That is what makes [`MemorySink`]'s ceiling stop applying: there is no byte array to count in an
3214
3177
  * `i32` and nothing resident, so a multi-GB master is signed at the disk's speed rather than the
3215
3178
  * 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
3179
  */
3221
3180
  export declare class FileSink extends UniffiAbstractObject implements FileSinkLike {
3222
3181
  readonly [uniffiTypeNameSymbol] = "FileSink";
@@ -3224,8 +3183,8 @@ export declare class FileSink extends UniffiAbstractObject implements FileSinkLi
3224
3183
  readonly [pointerLiteralSymbol]: UniffiHandle;
3225
3184
  private constructor();
3226
3185
  /**
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.
3186
+ * Create `path`, or truncate it if it is already there. What a `sign` output wants: the
3187
+ * signed asset is written into it whole.
3229
3188
  *
3230
3189
  * # Errors
3231
3190
  *
@@ -3233,9 +3192,9 @@ export declare class FileSink extends UniffiAbstractObject implements FileSinkLi
3233
3192
  */
3234
3193
  static create(path: string): FileSinkLike;
3235
3194
  /**
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.
3195
+ * Open an existing `path` for reading and writing, keeping what is in it. What `embed` wants:
3196
+ * the asset is already there and the manifest is written into it, so truncating it would
3197
+ * destroy the very thing being signed.
3239
3198
  *
3240
3199
  * # Errors
3241
3200
  *
@@ -3324,70 +3283,8 @@ export declare class FileSource extends UniffiAbstractObject implements FileSour
3324
3283
  static instanceOf(obj_: any): obj_ is FileSource;
3325
3284
  }
3326
3285
  /**
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).
3286
+ * An in-memory [`RangeSink`] for a caller that wants `embed`'s composed result back:
3287
+ * `sink = MemorySink(data)`, pass it to `embed`, then read `sink.bytes()`.
3391
3288
  *
3392
3289
  * # Size ceiling
3393
3290
  *
@@ -3399,9 +3296,14 @@ export declare class IsccBinder extends UniffiAbstractObject implements IsccBind
3399
3296
  * [`RangeSink`] over a file (or any store that seeks) for anything approaching that: the SDK
3400
3297
  * writes ranges straight through it and never holds the asset.
3401
3298
  *
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.
3299
+ * Construction and `bytes()` each move the whole asset across the boundary once, on the calling
3300
+ * thread. A ranged sink pays neither.
3301
+ *
3302
+ * # Capacity
3303
+ *
3304
+ * The buffer never grows past its capacity: [`MemorySink::new`] allows 2 GiB, and
3305
+ * [`MemorySink::with_capacity`] names another. A write or `set_length` that would exceed it fails
3306
+ * `ResourceExhausted` without allocating.
3405
3307
  */
3406
3308
  export interface MemorySinkLike {
3407
3309
  /**
@@ -3431,13 +3333,8 @@ export interface MemorySinkLike {
3431
3333
  */
3432
3334
  export type MemorySinkInterface = MemorySinkLike;
3433
3335
  /**
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).
3336
+ * An in-memory [`RangeSink`] for a caller that wants `embed`'s composed result back:
3337
+ * `sink = MemorySink(data)`, pass it to `embed`, then read `sink.bytes()`.
3441
3338
  *
3442
3339
  * # Size ceiling
3443
3340
  *
@@ -3449,9 +3346,14 @@ export type MemorySinkInterface = MemorySinkLike;
3449
3346
  * [`RangeSink`] over a file (or any store that seeks) for anything approaching that: the SDK
3450
3347
  * writes ranges straight through it and never holds the asset.
3451
3348
  *
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.
3349
+ * Construction and `bytes()` each move the whole asset across the boundary once, on the calling
3350
+ * thread. A ranged sink pays neither.
3351
+ *
3352
+ * # Capacity
3353
+ *
3354
+ * The buffer never grows past its capacity: [`MemorySink::new`] allows 2 GiB, and
3355
+ * [`MemorySink::with_capacity`] names another. A write or `set_length` that would exceed it fails
3356
+ * `ResourceExhausted` without allocating.
3455
3357
  */
3456
3358
  export declare class MemorySink extends UniffiAbstractObject implements MemorySinkLike {
3457
3359
  readonly [uniffiTypeNameSymbol] = "MemorySink";
@@ -3463,6 +3365,15 @@ export declare class MemorySink extends UniffiAbstractObject implements MemorySi
3463
3365
  * The buffer is at or above the 2 GiB a byte array can be counted in.
3464
3366
  */
3465
3367
  constructor(data: ArrayBuffer);
3368
+ /**
3369
+ * A sink that refuses to grow past `capacity` bytes.
3370
+ *
3371
+ * # Errors
3372
+ *
3373
+ * The buffer is already larger than `capacity`, or at or above the 2 GiB a byte array can
3374
+ * be counted in.
3375
+ */
3376
+ static withCapacity(data: ArrayBuffer, capacity: bigint): MemorySinkLike;
3466
3377
  /**
3467
3378
  * The buffer's current contents, e.g. after passing this sink through `embed`. A copy.
3468
3379
  *
@@ -3488,11 +3399,8 @@ export declare class MemorySink extends UniffiAbstractObject implements MemorySi
3488
3399
  static instanceOf(obj_: any): obj_ is MemorySink;
3489
3400
  }
3490
3401
  /**
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)`.
3402
+ * An in-memory [`RangeSource`] for a caller that already holds the whole asset as bytes:
3403
+ * `MemorySource(data)`, no subclass.
3496
3404
  *
3497
3405
  * # Size ceiling
3498
3406
  *
@@ -3502,9 +3410,10 @@ export declare class MemorySink extends UniffiAbstractObject implements MemorySi
3502
3410
  * [`RangeSource`] over a file handle for anything approaching that: the SDK only ever asks for
3503
3411
  * bounded ranges, so nothing else has to hold the asset.
3504
3412
  *
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.
3413
+ * Construction moves the whole asset across the boundary once, on the calling thread; the SDK
3414
+ * then holds what arrived and answers every read as a window into it. That crossing is the one
3415
+ * part of a sign or verify the SDK cannot move off your thread, and neither a ranged source nor
3416
+ * [`FileSource`] pays it.
3508
3417
  */
3509
3418
  export interface MemorySourceLike {
3510
3419
  length(asyncOpts_?: {
@@ -3519,11 +3428,8 @@ export interface MemorySourceLike {
3519
3428
  */
3520
3429
  export type MemorySourceInterface = MemorySourceLike;
3521
3430
  /**
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)`.
3431
+ * An in-memory [`RangeSource`] for a caller that already holds the whole asset as bytes:
3432
+ * `MemorySource(data)`, no subclass.
3527
3433
  *
3528
3434
  * # Size ceiling
3529
3435
  *
@@ -3533,9 +3439,10 @@ export type MemorySourceInterface = MemorySourceLike;
3533
3439
  * [`RangeSource`] over a file handle for anything approaching that: the SDK only ever asks for
3534
3440
  * bounded ranges, so nothing else has to hold the asset.
3535
3441
  *
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.
3442
+ * Construction moves the whole asset across the boundary once, on the calling thread; the SDK
3443
+ * then holds what arrived and answers every read as a window into it. That crossing is the one
3444
+ * part of a sign or verify the SDK cannot move off your thread, and neither a ranged source nor
3445
+ * [`FileSource`] pays it.
3539
3446
  */
3540
3447
  export declare class MemorySource extends UniffiAbstractObject implements MemorySourceLike {
3541
3448
  readonly [uniffiTypeNameSymbol] = "MemorySource";
@@ -3583,36 +3490,36 @@ export declare class SignerClient extends UniffiAbstractObject implements Signer
3583
3490
  * `options` is malformed. The channel connects lazily, so an unreachable Signer
3584
3491
  * surfaces on the first sign RPC instead.
3585
3492
  */
3586
- static connect(endpoint: string, options: ConnectOptions, asyncOpts_?: {
3493
+ static connect(endpoint: string, options?: ConnectOptions, asyncOpts_?: {
3587
3494
  signal: AbortSignal;
3588
3495
  }): Promise<SignerClientLike>;
3589
3496
  uniffiDestroy(): void;
3590
3497
  static instanceOf(obj_: any): obj_ is SignerClient;
3591
3498
  }
3592
3499
  /**
3593
- * A live-stream signer bound to a [`SignerClient`](super::client::SignerClient) and a
3500
+ * A stream signer bound to a [`SignerClient`](super::client::SignerClient) and a
3594
3501
  * [`SigningVault`]. Construct once with [`create`](Self::create), then `init` a session and
3595
3502
  * sign every segment through the [`StreamSession`] it returns.
3596
3503
  */
3597
3504
  export interface StreamIssuerLike {
3598
3505
  /**
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.
3506
+ * Open the stream `id`: mint its first session key under `options.rotation_policy`, sign the
3507
+ * init (moov) segment `source` under `options.delivery`, and hand back a [`StreamSession`]
3508
+ * to sign through.
3602
3509
  *
3603
3510
  * On `rotation_due`, call [`StreamIssuer::rotate`], not this.
3604
3511
  *
3605
3512
  * # Errors
3606
3513
  *
3607
- * Fails on signer RPC failure, a vault error, or an `init_body` that isn't a BMFF init
3608
- * segment.
3514
+ * Fails on signer RPC failure, a vault error, or a `source` that isn't a BMFF init segment.
3609
3515
  */
3610
- init(streamId: string, initBody: RangeSource, manifest: StreamManifestSpec, options: InitOptions, asyncOpts_?: {
3516
+ init(id: string, source: RangeSource, manifest: StreamManifestSpec, options: InitOptions, asyncOpts_?: {
3611
3517
  signal: AbortSignal;
3612
3518
  }): Promise<StreamStart>;
3613
3519
  /**
3614
3520
  * Succeed `session` on the stream it already names, signing a fresh init (moov) segment
3615
- * under a new key and forgetting the outgoing one.
3521
+ * under a new key and forgetting the outgoing one. Once this succeeds, `session` refuses to
3522
+ * sign; until then it keeps signing, so a failed rotation can be retried.
3616
3523
  *
3617
3524
  * The stream id comes from `session`, so a rotation cannot be pointed at the wrong stream,
3618
3525
  * and the retired key cannot be left behind: it would still sign for the rest of its
@@ -3620,9 +3527,10 @@ export interface StreamIssuerLike {
3620
3527
  *
3621
3528
  * # Errors
3622
3529
  *
3623
- * As [`StreamIssuer::init`].
3530
+ * As [`StreamIssuer::init`], plus `FAILED_PRECONDITION` (`SESSION_ENDED`) for a session
3531
+ * already stopped or rotated, or with a `stop` or `rotate` in flight.
3624
3532
  */
3625
- rotate(session: StreamSessionLike, initBody: RangeSource, manifest: StreamManifestSpec, options: InitOptions, asyncOpts_?: {
3533
+ rotate(session: StreamSessionLike, source: RangeSource, manifest: StreamManifestSpec, options: InitOptions, asyncOpts_?: {
3626
3534
  signal: AbortSignal;
3627
3535
  }): Promise<StreamStart>;
3628
3536
  }
@@ -3631,7 +3539,7 @@ export interface StreamIssuerLike {
3631
3539
  */
3632
3540
  export type StreamIssuerInterface = StreamIssuerLike;
3633
3541
  /**
3634
- * A live-stream signer bound to a [`SignerClient`](super::client::SignerClient) and a
3542
+ * A stream signer bound to a [`SignerClient`](super::client::SignerClient) and a
3635
3543
  * [`SigningVault`]. Construct once with [`create`](Self::create), then `init` a session and
3636
3544
  * sign every segment through the [`StreamSession`] it returns.
3637
3545
  */
@@ -3645,23 +3553,23 @@ export declare class StreamIssuer extends UniffiAbstractObject implements Stream
3645
3553
  */
3646
3554
  static create(client: SignerClientLike, vault: SigningVault): StreamIssuerLike;
3647
3555
  /**
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.
3556
+ * Open the stream `id`: mint its first session key under `options.rotation_policy`, sign the
3557
+ * init (moov) segment `source` under `options.delivery`, and hand back a [`StreamSession`]
3558
+ * to sign through.
3651
3559
  *
3652
3560
  * On `rotation_due`, call [`StreamIssuer::rotate`], not this.
3653
3561
  *
3654
3562
  * # Errors
3655
3563
  *
3656
- * Fails on signer RPC failure, a vault error, or an `init_body` that isn't a BMFF init
3657
- * segment.
3564
+ * Fails on signer RPC failure, a vault error, or a `source` that isn't a BMFF init segment.
3658
3565
  */
3659
- init(streamId: string, initBody: RangeSource, manifest: StreamManifestSpec, options: InitOptions, asyncOpts_?: {
3566
+ init(id: string, source: RangeSource, manifest: StreamManifestSpec, options: InitOptions, asyncOpts_?: {
3660
3567
  signal: AbortSignal;
3661
3568
  }): Promise<StreamStart>;
3662
3569
  /**
3663
3570
  * Succeed `session` on the stream it already names, signing a fresh init (moov) segment
3664
- * under a new key and forgetting the outgoing one.
3571
+ * under a new key and forgetting the outgoing one. Once this succeeds, `session` refuses to
3572
+ * sign; until then it keeps signing, so a failed rotation can be retried.
3665
3573
  *
3666
3574
  * The stream id comes from `session`, so a rotation cannot be pointed at the wrong stream,
3667
3575
  * and the retired key cannot be left behind: it would still sign for the rest of its
@@ -3669,24 +3577,26 @@ export declare class StreamIssuer extends UniffiAbstractObject implements Stream
3669
3577
  *
3670
3578
  * # Errors
3671
3579
  *
3672
- * As [`StreamIssuer::init`].
3580
+ * As [`StreamIssuer::init`], plus `FAILED_PRECONDITION` (`SESSION_ENDED`) for a session
3581
+ * already stopped or rotated, or with a `stop` or `rotate` in flight.
3673
3582
  */
3674
- rotate(session: StreamSessionLike, initBody: RangeSource, manifest: StreamManifestSpec, options: InitOptions, asyncOpts_?: {
3583
+ rotate(session: StreamSessionLike, source: RangeSource, manifest: StreamManifestSpec, options: InitOptions, asyncOpts_?: {
3675
3584
  signal: AbortSignal;
3676
3585
  }): Promise<StreamStart>;
3677
3586
  uniffiDestroy(): void;
3678
3587
  static instanceOf(obj_: any): obj_ is StreamIssuer;
3679
3588
  }
3680
3589
  /**
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.
3590
+ * A per-session ECDSA key store, implemented by the host. `mint` returns a fresh key that will be
3591
+ * signed under for the request's `validity_period`, so give it that lifetime and let the store
3592
+ * expire it; a new input to minting arrives as a field of `MintRequest`. `sign` produces the raw
3593
+ * ECDSA signature over `payload` with the key `kid` names (the SDK frames it into COSE);
3594
+ * `forget` drops a retired key. Every method may raise to abort.
3685
3595
  */
3686
3596
  export interface SigningVault {
3687
- mint(validityPeriodSecs: bigint, asyncOpts_?: {
3597
+ mint(request: MintRequest, asyncOpts_?: {
3688
3598
  signal: AbortSignal;
3689
- }): Promise<VaultPublicKey>;
3599
+ }): Promise<SessionKey>;
3690
3600
  sign(kid: ArrayBuffer, payload: ArrayBuffer, asyncOpts_?: {
3691
3601
  signal: AbortSignal;
3692
3602
  }): Promise<ArrayBuffer>;
@@ -3743,13 +3653,6 @@ declare const _default$1: Readonly<{
3743
3653
  lift(value: UniffiByteArray): AssetDelivery;
3744
3654
  lower(value: AssetDelivery, alloc: RustBufferAllocator): UniffiByteArray;
3745
3655
  };
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
3656
  FfiConverterTypeAssetIssuer: FfiConverterObject<AssetIssuerLike>;
3754
3657
  FfiConverterTypeAssetManifestSpec: {
3755
3658
  readFromCursor(c: Cursor): AssetManifestSpec;
@@ -3766,7 +3669,20 @@ declare const _default$1: Readonly<{
3766
3669
  lift(value: UniffiByteArray): AssetOrigin;
3767
3670
  lower(value: AssetOrigin, alloc: RustBufferAllocator): UniffiByteArray;
3768
3671
  };
3769
- FfiConverterTypeBinder: FfiConverterObjectWithCallbacks<Binder>;
3672
+ FfiConverterTypeBlock: {
3673
+ readFromCursor(c: Cursor): Block;
3674
+ writeIntoCursor(value: Block, c: Cursor): void;
3675
+ allocationSize(value: Block): number;
3676
+ lift(value: UniffiByteArray): Block;
3677
+ lower(value: Block, alloc: RustBufferAllocator): UniffiByteArray;
3678
+ };
3679
+ FfiConverterTypeByteRange: {
3680
+ readFromCursor(c: Cursor): ByteRange;
3681
+ writeIntoCursor(value: ByteRange, c: Cursor): void;
3682
+ allocationSize(value: ByteRange): number;
3683
+ lift(value: UniffiByteArray): ByteRange;
3684
+ lower(value: ByteRange, alloc: RustBufferAllocator): UniffiByteArray;
3685
+ };
3770
3686
  FfiConverterTypeCode: {
3771
3687
  readFromCursor(c: Cursor): Code;
3772
3688
  writeIntoCursor(value: Code, c: Cursor): void;
@@ -3788,6 +3704,14 @@ declare const _default$1: Readonly<{
3788
3704
  lift(value: UniffiByteArray): ComponentEvent;
3789
3705
  lower(value: ComponentEvent, alloc: RustBufferAllocator): UniffiByteArray;
3790
3706
  };
3707
+ FfiConverterTypeCompute: FfiConverterObjectWithCallbacks<Compute>;
3708
+ FfiConverterTypeComputeRequest: {
3709
+ readFromCursor(c: Cursor): ComputeRequest;
3710
+ writeIntoCursor(value: ComputeRequest, c: Cursor): void;
3711
+ allocationSize(value: ComputeRequest): number;
3712
+ lift(value: UniffiByteArray): ComputeRequest;
3713
+ lower(value: ComputeRequest, alloc: RustBufferAllocator): UniffiByteArray;
3714
+ };
3791
3715
  FfiConverterTypeConnectOptions: {
3792
3716
  readFromCursor(c: Cursor): ConnectOptions;
3793
3717
  writeIntoCursor(value: ConnectOptions, c: Cursor): void;
@@ -3809,13 +3733,6 @@ declare const _default$1: Readonly<{
3809
3733
  lift(value: UniffiByteArray): CustomAction;
3810
3734
  lower(value: CustomAction, alloc: RustBufferAllocator): UniffiByteArray;
3811
3735
  };
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
3736
  FfiConverterTypeEmbedOptions: {
3820
3737
  readFromCursor(c: Cursor): EmbedOptions;
3821
3738
  writeIntoCursor(value: EmbedOptions, c: Cursor): void;
@@ -3832,7 +3749,6 @@ declare const _default$1: Readonly<{
3832
3749
  };
3833
3750
  FfiConverterTypeFileSink: FfiConverterObject<FileSinkLike>;
3834
3751
  FfiConverterTypeFileSource: FfiConverterObject<FileSourceLike>;
3835
- FfiConverterTypeHeldBinder: FfiConverterObject<HeldBinderLike>;
3836
3752
  FfiConverterTypeIdentity: {
3837
3753
  readFromCursor(c: Cursor): Identity;
3838
3754
  writeIntoCursor(value: Identity, c: Cursor): void;
@@ -3847,12 +3763,12 @@ declare const _default$1: Readonly<{
3847
3763
  lift(value: UniffiByteArray): Ingredient;
3848
3764
  lower(value: Ingredient, alloc: RustBufferAllocator): UniffiByteArray;
3849
3765
  };
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;
3766
+ FfiConverterTypeIngredientKind: {
3767
+ readFromCursor(c: Cursor): IngredientKind;
3768
+ writeIntoCursor(value: IngredientKind, c: Cursor): void;
3769
+ allocationSize(value: IngredientKind): number;
3770
+ lift(value: UniffiByteArray): IngredientKind;
3771
+ lower(value: IngredientKind, alloc: RustBufferAllocator): UniffiByteArray;
3856
3772
  };
3857
3773
  FfiConverterTypeInitOptions: {
3858
3774
  readFromCursor(c: Cursor): InitOptions;
@@ -3868,7 +3784,6 @@ declare const _default$1: Readonly<{
3868
3784
  lift(value: UniffiByteArray): InitOutcome;
3869
3785
  lower(value: InitOutcome, alloc: RustBufferAllocator): UniffiByteArray;
3870
3786
  };
3871
- FfiConverterTypeIsccBinder: FfiConverterObject<IsccBinderLike>;
3872
3787
  FfiConverterTypeJsonObject: FfiConverter<UniffiByteArray, string>;
3873
3788
  FfiConverterTypeJsonValue: FfiConverter<UniffiByteArray, string>;
3874
3789
  FfiConverterTypeMarkOptions: {
@@ -3887,6 +3802,13 @@ declare const _default$1: Readonly<{
3887
3802
  };
3888
3803
  FfiConverterTypeMemorySink: FfiConverterObject<MemorySinkLike>;
3889
3804
  FfiConverterTypeMemorySource: FfiConverterObject<MemorySourceLike>;
3805
+ FfiConverterTypeMintRequest: {
3806
+ readFromCursor(c: Cursor): MintRequest;
3807
+ writeIntoCursor(value: MintRequest, c: Cursor): void;
3808
+ allocationSize(value: MintRequest): number;
3809
+ lift(value: UniffiByteArray): MintRequest;
3810
+ lower(value: MintRequest, alloc: RustBufferAllocator): UniffiByteArray;
3811
+ };
3890
3812
  FfiConverterTypeOpenedOrigin: {
3891
3813
  readFromCursor(c: Cursor): OpenedOrigin;
3892
3814
  writeIntoCursor(value: OpenedOrigin, c: Cursor): void;
@@ -3894,22 +3816,8 @@ declare const _default$1: Readonly<{
3894
3816
  lift(value: UniffiByteArray): OpenedOrigin;
3895
3817
  lower(value: OpenedOrigin, alloc: RustBufferAllocator): UniffiByteArray;
3896
3818
  };
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
3819
  FfiConverterTypeRangeSink: FfiConverterObjectWithCallbacks<RangeSink>;
3905
3820
  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
3821
  FfiConverterTypeRotationPolicy: {
3914
3822
  readFromCursor(c: Cursor): RotationPolicy;
3915
3823
  writeIntoCursor(value: RotationPolicy, c: Cursor): void;
@@ -3917,6 +3825,13 @@ declare const _default$1: Readonly<{
3917
3825
  lift(value: UniffiByteArray): RotationPolicy;
3918
3826
  lower(value: RotationPolicy, alloc: RustBufferAllocator): UniffiByteArray;
3919
3827
  };
3828
+ FfiConverterTypeScope: {
3829
+ readFromCursor(c: Cursor): Scope;
3830
+ writeIntoCursor(value: Scope, c: Cursor): void;
3831
+ allocationSize(value: Scope): number;
3832
+ lift(value: UniffiByteArray): Scope;
3833
+ lower(value: Scope, alloc: RustBufferAllocator): UniffiByteArray;
3834
+ };
3920
3835
  FfiConverterTypeSdkError: {
3921
3836
  readFromCursor(c: Cursor): SdkError;
3922
3837
  writeIntoCursor(value: SdkError, c: Cursor): void;
@@ -3938,6 +3853,13 @@ declare const _default$1: Readonly<{
3938
3853
  lift(value: UniffiByteArray): SegmentOutcome;
3939
3854
  lower(value: SegmentOutcome, alloc: RustBufferAllocator): UniffiByteArray;
3940
3855
  };
3856
+ FfiConverterTypeSessionKey: {
3857
+ readFromCursor(c: Cursor): SessionKey;
3858
+ writeIntoCursor(value: SessionKey, c: Cursor): void;
3859
+ allocationSize(value: SessionKey): number;
3860
+ lift(value: UniffiByteArray): SessionKey;
3861
+ lower(value: SessionKey, alloc: RustBufferAllocator): UniffiByteArray;
3862
+ };
3941
3863
  FfiConverterTypeSignOptions: {
3942
3864
  readFromCursor(c: Cursor): SignOptions;
3943
3865
  writeIntoCursor(value: SignOptions, c: Cursor): void;
@@ -3967,6 +3889,20 @@ declare const _default$1: Readonly<{
3967
3889
  lift(value: UniffiByteArray): SoftBinding;
3968
3890
  lower(value: SoftBinding, alloc: RustBufferAllocator): UniffiByteArray;
3969
3891
  };
3892
+ FfiConverterTypeSoftBindingSource: {
3893
+ readFromCursor(c: Cursor): SoftBindingSource;
3894
+ writeIntoCursor(value: SoftBindingSource, c: Cursor): void;
3895
+ allocationSize(value: SoftBindingSource): number;
3896
+ lift(value: UniffiByteArray): SoftBindingSource;
3897
+ lower(value: SoftBindingSource, alloc: RustBufferAllocator): UniffiByteArray;
3898
+ };
3899
+ FfiConverterTypeSoftwareAgent: {
3900
+ readFromCursor(c: Cursor): SoftwareAgent;
3901
+ writeIntoCursor(value: SoftwareAgent, c: Cursor): void;
3902
+ allocationSize(value: SoftwareAgent): number;
3903
+ lift(value: UniffiByteArray): SoftwareAgent;
3904
+ lower(value: SoftwareAgent, alloc: RustBufferAllocator): UniffiByteArray;
3905
+ };
3970
3906
  FfiConverterTypeStandardAction: {
3971
3907
  readFromCursor(c: Cursor): StandardAction;
3972
3908
  writeIntoCursor(value: StandardAction, c: Cursor): void;
@@ -3989,6 +3925,13 @@ declare const _default$1: Readonly<{
3989
3925
  lift(value: UniffiByteArray): StreamManifestSpec;
3990
3926
  lower(value: StreamManifestSpec, alloc: RustBufferAllocator): UniffiByteArray;
3991
3927
  };
3928
+ FfiConverterTypeStreamOrigin: {
3929
+ readFromCursor(c: Cursor): StreamOrigin;
3930
+ writeIntoCursor(value: StreamOrigin, c: Cursor): void;
3931
+ allocationSize(value: StreamOrigin): number;
3932
+ lift(value: UniffiByteArray): StreamOrigin;
3933
+ lower(value: StreamOrigin, alloc: RustBufferAllocator): UniffiByteArray;
3934
+ };
3992
3935
  FfiConverterTypeStreamSession: FfiConverterObject<StreamSessionLike>;
3993
3936
  FfiConverterTypeStreamStart: {
3994
3937
  readFromCursor(c: Cursor): StreamStart;
@@ -4004,15 +3947,14 @@ declare const _default$1: Readonly<{
4004
3947
  lift(value: UniffiByteArray): Thumbnail;
4005
3948
  lower(value: Thumbnail, alloc: RustBufferAllocator): UniffiByteArray;
4006
3949
  };
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;
3950
+ FfiConverterTypeTimespan: {
3951
+ readFromCursor(c: Cursor): Timespan;
3952
+ writeIntoCursor(value: Timespan, c: Cursor): void;
3953
+ allocationSize(value: Timespan): number;
3954
+ lift(value: UniffiByteArray): Timespan;
3955
+ lower(value: Timespan, alloc: RustBufferAllocator): UniffiByteArray;
4015
3956
  };
3957
+ FfiConverterTypeUrl: FfiConverter<UniffiByteArray, string>;
4016
3958
  };
4017
3959
  }>;
4018
3960
  //#endregion