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

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