@xyo-network/boundwitness-builder 3.5.2 → 3.6.0-rc.2

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.
@@ -1,24 +1,21 @@
1
1
  import type { Address, Hash } from '@xylabs/hex';
2
- import type { AnyObject, JsonObject } from '@xylabs/object';
2
+ import type { EmptyObject } from '@xylabs/object';
3
3
  import type { AccountInstance } from '@xyo-network/account-model';
4
- import type { BoundWitness } from '@xyo-network/boundwitness-model';
5
- import { BoundWitnessSchema } from '@xyo-network/boundwitness-model';
6
- import type { PayloadBuilderOptions, WithoutMeta, WithoutSchema } from '@xyo-network/payload-builder';
4
+ import { type BoundWitness, type Signed, type UnsignedBoundWitness } from '@xyo-network/boundwitness-model';
5
+ import type { PayloadBuilderOptions, WithOptionalSchema } from '@xyo-network/payload-builder';
7
6
  import { PayloadBuilderBase } from '@xyo-network/payload-builder';
8
- import type { ModuleError, Payload, Schema, WithMeta } from '@xyo-network/payload-model';
7
+ import type { ModuleError, Payload, Schema } from '@xyo-network/payload-model';
9
8
  export type GeneratedBoundWitnessFields = 'addresses' | 'payload_hashes' | 'payload_schemas' | 'previous_hashes';
10
- export interface BoundWitnessBuilderOptions<TBoundWitness extends BoundWitness = BoundWitness, TPayload extends Payload = Payload> extends Omit<PayloadBuilderOptions<Omit<TBoundWitness, GeneratedBoundWitnessFields>>, 'schema'> {
9
+ export interface BoundWitnessBuilderOptions<TFields extends EmptyObject = EmptyObject, TPayload extends Payload = Payload> extends PayloadBuilderOptions<Omit<Omit<UnsignedBoundWitness, GeneratedBoundWitnessFields>, 'schema'> & {
10
+ schema?: Schema;
11
+ } & TFields> {
11
12
  readonly accounts?: AccountInstance[];
12
- readonly destination?: Hash[];
13
- readonly payloadHashes?: TBoundWitness['payload_hashes'];
14
- readonly payloadSchemas?: TBoundWitness['payload_schemas'];
13
+ readonly payloadHashes?: UnsignedBoundWitness['payload_hashes'];
14
+ readonly payloadSchemas?: UnsignedBoundWitness['payload_schemas'];
15
15
  readonly payloads?: TPayload[];
16
- readonly sourceQuery?: Hash;
17
16
  readonly timestamp?: number;
18
17
  }
19
- export declare class BoundWitnessBuilder<TBoundWitness extends BoundWitness = BoundWitness, TPayload extends Payload = Payload> extends PayloadBuilderBase<Omit<TBoundWitness, GeneratedBoundWitnessFields>, BoundWitnessBuilderOptions<TBoundWitness> & {
20
- schema: BoundWitnessSchema;
21
- }> {
18
+ export declare class BoundWitnessBuilder<TBoundWitness extends UnsignedBoundWitness = UnsignedBoundWitness, TPayload extends Payload = Payload, TOptions extends BoundWitnessBuilderOptions<TBoundWitness, TPayload> = BoundWitnessBuilderOptions<TBoundWitness, TPayload>> extends PayloadBuilderBase<TBoundWitness, TOptions> {
22
19
  private static readonly _buildMutex;
23
20
  private _accounts;
24
21
  private _destination?;
@@ -29,32 +26,33 @@ export declare class BoundWitnessBuilder<TBoundWitness extends BoundWitness = Bo
29
26
  private _payloads;
30
27
  private _sourceQuery?;
31
28
  private _timestamp;
32
- constructor(options?: BoundWitnessBuilderOptions<TBoundWitness, TPayload>);
29
+ constructor(options?: WithOptionalSchema<TOptions>);
33
30
  protected get addresses(): Address[];
34
31
  protected get payloadSchemas(): string[];
35
- protected get previousHashBuffers(): (ArrayBufferLike | null)[];
32
+ protected get previousHashBytes(): (ArrayBufferLike | null)[];
36
33
  protected get previousHashes(): (Hash | null)[];
37
34
  protected get timestamp(): number;
38
35
  static addressIndex<T extends BoundWitness>(payload: T, address: Address): number;
39
- static build<TBoundWitness extends BoundWitness>(options: BoundWitnessBuilderOptions<TBoundWitness>): Promise<[WithMeta<TBoundWitness>, WithMeta<{
36
+ static build<TBoundWitness extends BoundWitness>(options: WithOptionalSchema<BoundWitnessBuilderOptions<TBoundWitness>>): Promise<[Signed<import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & import("@xyo-network/boundwitness-model").BoundWitnessFields & {
37
+ schema: "network.xyo.boundwitness";
38
+ }>, ({
40
39
  schema: string;
41
- } & import("@xyo-network/payload-model").PayloadFields>[], WithMeta<import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & {
40
+ } & import("@xyo-network/payload-model").PayloadFields)[], (import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & {
42
41
  details?: import("@xylabs/object").JsonValue;
43
42
  message?: string;
44
43
  name?: string;
45
44
  query?: Hash;
46
45
  schema: import("@xyo-network/payload-model").ModuleErrorSchema;
47
46
  sources?: Hash[];
48
- }>[]]>;
49
- static dataHashableFields<T extends Payload = Payload<AnyObject>>(schema: string, fields?: WithoutSchema<WithoutMeta<T>>): Promise<WithoutMeta<T>>;
47
+ })[]]>;
50
48
  static previousHash<T extends BoundWitness>(boundWitness: T, address: Address): string | undefined;
51
- protected static linkingFields<T extends BoundWitness = BoundWitness>(accounts: AccountInstance[], payloads?: Payload[], timestamp?: number): Promise<WithoutSchema<WithoutMeta<T>>>;
52
- protected static metaFields(dataHash: Hash, otherMeta?: JsonObject, stamp?: boolean, accounts?: AccountInstance[], previousHashes?: (Hash | null)[], destination?: Address[], sourceQuery?: Hash): Promise<JsonObject>;
49
+ protected static linkingFields<T extends BoundWitness>(accounts: AccountInstance[], payloads?: Payload[]): Promise<Pick<T, GeneratedBoundWitnessFields>>;
53
50
  protected static signature<T extends BoundWitness>(payload: T, address: Address): Lowercase<string>;
54
- protected static signatures(accounts: AccountInstance[], hash: Hash, previousHashes: (Hash | ArrayBuffer | null)[]): Promise<string[]>;
55
- private static validateLinkingFields;
56
- build(): Promise<[WithMeta<TBoundWitness>, WithMeta<TPayload>[], WithMeta<ModuleError>[]]>;
57
- dataHashableFields(): Promise<WithoutMeta<TBoundWitness>>;
51
+ protected static signatures(accounts: AccountInstance[], dataHash: Hash): Promise<string[]>;
52
+ private static validateGeneratedFields;
53
+ build(): Promise<[Signed<TBoundWitness>, TPayload[], ModuleError[]]>;
54
+ dataHash(): Promise<Lowercase<string>>;
55
+ dataHashableFields(): Promise<TBoundWitness>;
58
56
  error(payload?: ModuleError): this;
59
57
  errors(errors?: (ModuleError | null)[]): this;
60
58
  hashes(hashes: Hash[], schema: Schema[]): this;
@@ -67,9 +65,8 @@ export declare class BoundWitnessBuilder<TBoundWitness extends BoundWitness = Bo
67
65
  witness(account: AccountInstance): this;
68
66
  /** @deprecated use signers instead */
69
67
  witnesses(accounts: AccountInstance[]): this;
70
- protected metaFields(dataHash: Hash, stamp?: boolean): Promise<JsonObject>;
71
- protected signatures(_hash: Hash, previousHashes: (Hash | ArrayBuffer | null)[]): Promise<string[]>;
72
- private linkingFields;
68
+ protected sign(): Promise<string[]>;
69
+ private generatedFields;
73
70
  private missingSchemaMessage;
74
71
  }
75
72
  //# sourceMappingURL=Builder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Builder.d.ts","sourceRoot":"","sources":["../../src/Builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Builder.d.ts","sourceRoot":"","sources":["../../src/Builder.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ export declare class QueryBoundWitnessBuilder<TBoundWitness extends QueryBoundWi
5
5
  private _additional?;
6
6
  private _query;
7
7
  additional(additional: Payload[]): Promise<this>;
8
- dataHashableFields(): Promise<Omit<TBoundWitness, '$hash' | '$meta'>>;
9
- query<T extends TQuery>(query: T): Promise<this>;
8
+ dataHashableFields(): Promise<TBoundWitness>;
9
+ query<T extends TQuery>(query: T): this;
10
10
  }
11
11
  //# sourceMappingURL=QueryBoundWitnessBuilder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"QueryBoundWitnessBuilder.d.ts","sourceRoot":"","sources":["../../../src/Query/QueryBoundWitnessBuilder.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAGxE,OAAO,KAAK,EACV,OAAO,EAAE,KAAK,EACf,MAAM,4BAA4B,CAAA;AAEnC,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAEnD,qBAAa,wBAAwB,CACnC,aAAa,SAAS,iBAAiB,GAAG,iBAAiB,EAC3D,MAAM,SAAS,KAAK,GAAG,KAAK,CAC5B,SAAQ,mBAAmB,CAAC,aAAa,CAAC;IAC1C,OAAO,CAAC,WAAW,CAAC,CAAQ;IAC5B,OAAO,CAAC,MAAM,CAA8B;IAEtC,UAAU,CAAC,UAAU,EAAE,OAAO,EAAE;IAKvB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC;IAY9E,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,CAAC;CAKvC"}
1
+ {"version":3,"file":"QueryBoundWitnessBuilder.d.ts","sourceRoot":"","sources":["../../../src/Query/QueryBoundWitnessBuilder.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAGxE,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAEhE,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAEnD,qBAAa,wBAAwB,CACnC,aAAa,SAAS,iBAAiB,GAAG,iBAAiB,EAC3D,MAAM,SAAS,KAAK,GAAG,KAAK,CAC5B,SAAQ,mBAAmB,CAAC,aAAa,CAAC;IAC1C,OAAO,CAAC,WAAW,CAAC,CAAQ;IAC5B,OAAO,CAAC,MAAM,CAAoB;IAE5B,UAAU,CAAC,UAAU,EAAE,OAAO,EAAE;IAKvB,kBAAkB,IAAI,OAAO,CAAC,aAAa,CAAC;IAY3D,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,CAAC;CAKjC"}
@@ -2,8 +2,10 @@
2
2
  import { toArrayBuffer } from "@xylabs/arraybuffer";
3
3
  import { assertEx } from "@xylabs/assert";
4
4
  import { hexFromArrayBuffer } from "@xylabs/hex";
5
- import { BoundWitnessSchema } from "@xyo-network/boundwitness-model";
6
- import { removeEmptyFields, sortFields } from "@xyo-network/hash";
5
+ import {
6
+ BoundWitnessSchema
7
+ } from "@xyo-network/boundwitness-model";
8
+ import { ObjectHasher, sortFields } from "@xyo-network/hash";
7
9
  import { PayloadBuilder, PayloadBuilderBase } from "@xyo-network/payload-builder";
8
10
  import { Mutex } from "async-mutex";
9
11
  var uniqueAccounts = (accounts, throwOnFalse = false) => {
@@ -31,22 +33,18 @@ var BoundWitnessBuilder = class _BoundWitnessBuilder extends PayloadBuilderBase
31
33
  _sourceQuery;
32
34
  _timestamp;
33
35
  constructor(options) {
34
- super({ ...options, schema: BoundWitnessSchema });
36
+ super({ ...options, schema: options?.schema ?? BoundWitnessSchema });
35
37
  const {
36
38
  accounts,
37
39
  payloadHashes,
38
40
  payloadSchemas,
39
41
  payloads,
40
- sourceQuery,
41
- timestamp,
42
- destination
42
+ timestamp
43
43
  } = options ?? {};
44
44
  this._accounts = accounts ?? [];
45
45
  this._payloadHashes = payloadHashes;
46
46
  this._payloadSchemas = payloadSchemas;
47
47
  this._payloads = payloads ?? [];
48
- this._sourceQuery = sourceQuery;
49
- this._destination = destination;
50
48
  this._timestamp = timestamp ?? true;
51
49
  }
52
50
  get addresses() {
@@ -58,7 +56,7 @@ var BoundWitnessBuilder = class _BoundWitnessBuilder extends PayloadBuilderBase
58
56
  return assertEx(payload.schema, () => this.missingSchemaMessage(payload));
59
57
  });
60
58
  }
61
- get previousHashBuffers() {
59
+ get previousHashBytes() {
62
60
  return this._accounts.map((account) => account.previousHashBytes ?? null);
63
61
  }
64
62
  get previousHashes() {
@@ -77,74 +75,59 @@ var BoundWitnessBuilder = class _BoundWitnessBuilder extends PayloadBuilderBase
77
75
  static async build(options) {
78
76
  return await new _BoundWitnessBuilder(options).build();
79
77
  }
80
- static async dataHashableFields(schema, fields) {
81
- return await PayloadBuilderBase.dataHashableFields(schema, fields ? removeEmptyFields(fields) : void 0);
82
- }
83
78
  static previousHash(boundWitness, address) {
84
79
  return boundWitness.previous_hashes[this.addressIndex(boundWitness, address)]?.toLowerCase();
85
80
  }
86
- static async linkingFields(accounts, payloads, timestamp = Date.now()) {
81
+ static async linkingFields(accounts, payloads) {
87
82
  const addresses = accounts.map((account) => hexFromArrayBuffer(account.addressBytes, { prefix: false }));
88
83
  const previous_hashes = accounts.map((account) => account.previousHash ?? null);
89
84
  const payload_hashes = payloads ? await PayloadBuilder.dataHashes(payloads) : [];
90
- const payload_schemas = payloads?.map(({ schema }) => schema);
85
+ const payload_schemas = payloads?.map(({ schema }) => schema) ?? [];
91
86
  return {
92
87
  addresses,
93
88
  payload_hashes,
94
89
  payload_schemas,
95
- previous_hashes,
96
- timestamp
90
+ previous_hashes
97
91
  };
98
92
  }
99
- static async metaFields(dataHash, otherMeta, stamp = true, accounts, previousHashes, destination, sourceQuery) {
100
- const meta = await super.metaFields(dataHash, otherMeta, stamp);
101
- if (accounts?.length && previousHashes?.length) {
102
- assertEx(accounts.length === previousHashes.length, () => "accounts and previousHashes must have same length");
103
- meta.signatures = await this.signatures(accounts, dataHash, previousHashes);
104
- }
105
- if (sourceQuery) {
106
- meta.sourceQuery = sourceQuery;
107
- }
108
- if (destination) {
109
- meta.destination = destination;
110
- }
111
- return meta;
112
- }
113
93
  static signature(payload, address) {
114
- return payload.$meta.signatures[this.addressIndex(payload, address)];
94
+ return payload.$signatures[this.addressIndex(payload, address)];
115
95
  }
116
- static async signatures(accounts, hash, previousHashes) {
117
- const hashBytes = toArrayBuffer(hash);
118
- const previousHashesBytes = previousHashes?.map((ph) => ph ? toArrayBuffer(ph) : void 0);
119
- return await Promise.all(accounts.map(async (account, index) => hexFromArrayBuffer(await account.sign(hashBytes, previousHashesBytes[index]))));
96
+ static async signatures(accounts, dataHash) {
97
+ const hashBytes = toArrayBuffer(dataHash);
98
+ const previousHashesBytes = accounts?.map((account) => account.previousHashBytes);
99
+ return await Promise.all(accounts.map(async (account, index) => hexFromArrayBuffer((await account.sign(hashBytes, previousHashesBytes[index]))[0])));
120
100
  }
121
- static validateLinkingFields(bw) {
122
- assertEx(bw.payload_hashes?.length === bw.payload_schemas?.length, () => "Payload hash/schema mismatch");
123
- assertEx(!bw.payload_hashes.some((hash) => !hash), () => "nulls found in hashes");
124
- assertEx(!bw.payload_schemas.some((schema) => !schema), () => "nulls found in schemas");
101
+ static validateGeneratedFields(fields) {
102
+ assertEx(fields.payload_hashes?.length === fields.payload_schemas?.length, () => "Payload hash/schema mismatch");
103
+ assertEx(!fields.payload_hashes.some((hash) => !hash), () => "nulls found in hashes");
104
+ assertEx(!fields.payload_schemas.some((schema) => !schema), () => "nulls found in schemas");
125
105
  }
126
106
  async build() {
127
107
  return await _BoundWitnessBuilder._buildMutex.runExclusive(async () => {
128
108
  const dataHashableFields = await this.dataHashableFields();
129
- const $hash = (await PayloadBuilder.build(dataHashableFields)).$hash;
130
- const $meta = await this.metaFields($hash);
131
- const ret = {
132
- ...dataHashableFields,
133
- $hash,
134
- $meta
135
- };
109
+ const $signatures = await this.sign();
110
+ const ret = { ...dataHashableFields, $signatures };
136
111
  return [
137
112
  ret,
138
- await Promise.all(this._payloads?.map((payload) => PayloadBuilder.build(payload))),
139
- await Promise.all(this._errors?.map((error) => PayloadBuilder.build(error)))
113
+ this._payloads,
114
+ this._errors
140
115
  ];
141
116
  });
142
117
  }
118
+ async dataHash() {
119
+ const dataHashableFields = await this.dataHashableFields();
120
+ const hash = await ObjectHasher.hash(dataHashableFields);
121
+ return hash;
122
+ }
143
123
  async dataHashableFields() {
144
- const fields = await this.linkingFields();
145
- const result = await _BoundWitnessBuilder.dataHashableFields(this._schema, fields);
146
- _BoundWitnessBuilder.validateLinkingFields(result);
147
- return result;
124
+ const generatedFields = await this.generatedFields();
125
+ _BoundWitnessBuilder.validateGeneratedFields(generatedFields);
126
+ const fields = {
127
+ ...this._fields,
128
+ ...generatedFields
129
+ };
130
+ return await _BoundWitnessBuilder.dataHashableFields(this._schema, fields);
148
131
  }
149
132
  error(payload) {
150
133
  assertEx(this._errorHashes === void 0, () => "Can not set errors when hashes already set");
@@ -209,25 +192,13 @@ var BoundWitnessBuilder = class _BoundWitnessBuilder extends PayloadBuilderBase
209
192
  this._accounts?.push(...accounts);
210
193
  return this;
211
194
  }
212
- async metaFields(dataHash, stamp = true) {
213
- return await _BoundWitnessBuilder.metaFields(
214
- dataHash,
215
- this._$meta,
216
- stamp,
217
- this._accounts,
218
- this.previousHashes,
219
- this._destination,
220
- this._sourceQuery
221
- );
222
- }
223
- async signatures(_hash, previousHashes) {
195
+ async sign() {
224
196
  uniqueAccounts(this._accounts, true);
225
- const hash = toArrayBuffer(_hash);
226
- const previousHashesBytes = previousHashes.map((ph) => ph ? toArrayBuffer(ph) : void 0);
227
- return await Promise.all(this._accounts.map(async (account, index) => hexFromArrayBuffer(await account.sign(hash, previousHashesBytes[index]))));
197
+ const hashBytes = toArrayBuffer(await this.dataHash());
198
+ return await Promise.all(this._accounts.map(async (account) => hexFromArrayBuffer((await account.sign(hashBytes))[0])));
228
199
  }
229
- async linkingFields() {
230
- return await _BoundWitnessBuilder.linkingFields(this._accounts, this._payloads, this.timestamp);
200
+ async generatedFields() {
201
+ return await _BoundWitnessBuilder.linkingFields(this._accounts, this._payloads);
231
202
  }
232
203
  missingSchemaMessage(payload) {
233
204
  return `Builder: Missing Schema
@@ -249,17 +220,17 @@ var QueryBoundWitnessBuilder = class extends BoundWitnessBuilder {
249
220
  async dataHashableFields() {
250
221
  const fields = {
251
222
  ...await super.dataHashableFields(),
252
- query: assertEx2(this._query, () => "No Query Specified").$hash,
223
+ query: await PayloadBuilder2.dataHash(assertEx2(this._query, () => "No Query Specified")),
253
224
  schema: QueryBoundWitnessSchema
254
225
  };
255
226
  if (this._additional) {
256
227
  fields.additional = this._additional;
257
228
  }
258
- return fields;
229
+ return { ...fields };
259
230
  }
260
- async query(query) {
261
- this._query = await PayloadBuilder2.build(query);
262
- this.payload(this._query);
231
+ query(query) {
232
+ this.payload(query);
233
+ this._query = query;
263
234
  return this;
264
235
  }
265
236
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Builder.ts","../../src/Query/QueryBoundWitnessBuilder.ts"],"sourcesContent":["import { toArrayBuffer } from '@xylabs/arraybuffer'\nimport { assertEx } from '@xylabs/assert'\nimport type { Address, Hash } from '@xylabs/hex'\nimport { hexFromArrayBuffer } from '@xylabs/hex'\nimport type { AnyObject, JsonObject } from '@xylabs/object'\nimport type { AccountInstance } from '@xyo-network/account-model'\nimport type { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport { removeEmptyFields, sortFields } from '@xyo-network/hash'\nimport type {\n PayloadBuilderOptions, WithoutMeta, WithoutSchema,\n} from '@xyo-network/payload-builder'\nimport { PayloadBuilder, PayloadBuilderBase } from '@xyo-network/payload-builder'\nimport type {\n ModuleError, Payload, Schema, WithMeta,\n} from '@xyo-network/payload-model'\nimport { Mutex } from 'async-mutex'\n\nexport type GeneratedBoundWitnessFields = 'addresses' | 'payload_hashes' | 'payload_schemas' | 'previous_hashes'\n\nexport interface BoundWitnessBuilderOptions<TBoundWitness extends BoundWitness = BoundWitness, TPayload extends Payload = Payload>\n extends Omit<PayloadBuilderOptions<Omit<TBoundWitness, GeneratedBoundWitnessFields>>, 'schema'> {\n readonly accounts?: AccountInstance[]\n readonly destination?: Hash[]\n readonly payloadHashes?: TBoundWitness['payload_hashes']\n readonly payloadSchemas?: TBoundWitness['payload_schemas']\n readonly payloads?: TPayload[]\n readonly sourceQuery?: Hash\n readonly timestamp?: number\n}\n\nconst uniqueAccounts = (accounts: AccountInstance[], throwOnFalse = false) => {\n const addresses = new Set<Address>()\n for (const account of accounts) {\n if (addresses.has(account.address)) {\n if (throwOnFalse) {\n throw new Error('Duplicate address')\n }\n return false\n }\n addresses.add(account.address)\n }\n return true\n}\n\nexport class BoundWitnessBuilder<TBoundWitness extends BoundWitness = BoundWitness, TPayload extends Payload = Payload> extends PayloadBuilderBase<\n Omit<TBoundWitness, GeneratedBoundWitnessFields>,\n BoundWitnessBuilderOptions<TBoundWitness> & { schema: BoundWitnessSchema }\n> {\n private static readonly _buildMutex = new Mutex()\n private _accounts: AccountInstance[]\n private _destination?: Hash[]\n private _errorHashes?: Hash[]\n private _errors: ModuleError[] = []\n private _payloadHashes?: Hash[]\n private _payloadSchemas?: Schema[]\n private _payloads: TPayload[]\n private _sourceQuery?: Hash\n private _timestamp: boolean | number\n\n constructor(options?: BoundWitnessBuilderOptions<TBoundWitness, TPayload>) {\n super({ ...options, schema: BoundWitnessSchema })\n const {\n accounts, payloadHashes, payloadSchemas, payloads, sourceQuery, timestamp, destination,\n } = options ?? {}\n this._accounts = accounts ?? []\n this._payloadHashes = payloadHashes\n this._payloadSchemas = payloadSchemas\n this._payloads = payloads ?? []\n this._sourceQuery = sourceQuery\n this._destination = destination\n this._timestamp = timestamp ?? true\n }\n\n protected get addresses(): Address[] {\n uniqueAccounts(this._accounts, true)\n return this._accounts.map(account => account.address.toLowerCase()) as Address[]\n }\n\n protected get payloadSchemas(): string[] {\n return (\n this._payloadSchemas\n ?? this._payloads.map((payload) => {\n return assertEx(payload.schema, () => this.missingSchemaMessage(payload))\n })\n )\n }\n\n protected get previousHashBuffers(): (ArrayBufferLike | null)[] {\n return this._accounts.map(account => account.previousHashBytes ?? null)\n }\n\n protected get previousHashes(): (Hash | null)[] {\n return this._accounts.map(account => account.previousHash ?? null)\n }\n\n protected get timestamp(): number {\n return (this._timestamp = typeof this._timestamp === 'number' ? this._timestamp : Date.now())\n }\n\n static addressIndex<T extends BoundWitness>(payload: T, address: Address) {\n const index = payload.addresses.indexOf(address)\n if (index === -1) {\n throw new Error('Invalid address')\n }\n return index\n }\n\n static async build<TBoundWitness extends BoundWitness>(options: BoundWitnessBuilderOptions<TBoundWitness>) {\n return await new BoundWitnessBuilder(options).build()\n }\n\n static override async dataHashableFields<T extends Payload = Payload<AnyObject>>(\n schema: string,\n fields?: WithoutSchema<WithoutMeta<T>>,\n ): Promise<WithoutMeta<T>> {\n return await PayloadBuilderBase.dataHashableFields(schema, fields ? removeEmptyFields(fields) : undefined)\n }\n\n static previousHash<T extends BoundWitness>(boundWitness: T, address: Address) {\n return boundWitness.previous_hashes[this.addressIndex(boundWitness, address)]?.toLowerCase()\n }\n\n protected static async linkingFields<T extends BoundWitness = BoundWitness>(\n accounts: AccountInstance[],\n payloads?: Payload[],\n timestamp = Date.now(),\n ) {\n const addresses = accounts.map(account => hexFromArrayBuffer(account.addressBytes, { prefix: false }))\n const previous_hashes = accounts.map(account => account.previousHash ?? null)\n const payload_hashes = payloads ? await PayloadBuilder.dataHashes(payloads) : []\n const payload_schemas = payloads?.map(({ schema }) => schema)\n return {\n addresses, payload_hashes, payload_schemas, previous_hashes, timestamp,\n } as WithoutSchema<WithoutMeta<T>>\n }\n\n protected static override async metaFields(\n dataHash: Hash,\n otherMeta?: JsonObject,\n stamp = true,\n accounts?: AccountInstance[],\n previousHashes?: (Hash | null)[],\n destination?: Address[],\n sourceQuery?: Hash,\n ): Promise<JsonObject> {\n const meta = await super.metaFields(dataHash, otherMeta, stamp)\n\n if (accounts?.length && previousHashes?.length) {\n assertEx(accounts.length === previousHashes.length, () => 'accounts and previousHashes must have same length')\n meta.signatures = await this.signatures(accounts, dataHash, previousHashes)\n }\n\n if (sourceQuery) {\n meta.sourceQuery = sourceQuery\n }\n\n if (destination) {\n meta.destination = destination\n }\n\n return meta\n }\n\n protected static signature<T extends BoundWitness>(payload: T, address: Address) {\n return payload.$meta.signatures[this.addressIndex(payload, address)]\n }\n\n protected static async signatures(accounts: AccountInstance[], hash: Hash, previousHashes: (Hash | ArrayBuffer | null)[]): Promise<string[]> {\n const hashBytes = toArrayBuffer(hash)\n const previousHashesBytes = previousHashes?.map(ph => (ph ? toArrayBuffer(ph) : undefined))\n return await Promise.all(accounts.map(async (account, index) => hexFromArrayBuffer(await account.sign(hashBytes, previousHashesBytes[index]))))\n }\n\n private static validateLinkingFields(bw: Pick<BoundWitness, 'payload_hashes' | 'payload_schemas'>) {\n assertEx(bw.payload_hashes?.length === bw.payload_schemas?.length, () => 'Payload hash/schema mismatch')\n assertEx(!bw.payload_hashes.some(hash => !hash), () => 'nulls found in hashes')\n assertEx(!bw.payload_schemas.some(schema => !schema), () => 'nulls found in schemas')\n }\n\n async build(): Promise<[WithMeta<TBoundWitness>, WithMeta<TPayload>[], WithMeta<ModuleError>[]]> {\n return await BoundWitnessBuilder._buildMutex.runExclusive(async () => {\n const dataHashableFields = (await this.dataHashableFields()) as TBoundWitness\n const $hash = (await PayloadBuilder.build(dataHashableFields)).$hash\n const $meta = await this.metaFields($hash)\n\n const ret = {\n ...dataHashableFields,\n $hash,\n $meta,\n } as WithMeta<TBoundWitness>\n return [\n ret,\n await Promise.all(this._payloads?.map(payload => PayloadBuilder.build(payload))),\n await Promise.all(this._errors?.map(error => PayloadBuilder.build(error))),\n ]\n })\n }\n\n override async dataHashableFields(): Promise<WithoutMeta<TBoundWitness>> {\n const fields = await this.linkingFields()\n const result = await BoundWitnessBuilder.dataHashableFields<TBoundWitness>(this._schema, fields)\n\n BoundWitnessBuilder.validateLinkingFields(result)\n\n return result as Omit<TBoundWitness, '$meta' | '$hash'>\n }\n\n error(payload?: ModuleError) {\n assertEx(this._errorHashes === undefined, () => 'Can not set errors when hashes already set')\n if (payload) {\n this._errors.push(assertEx(sortFields(payload)))\n }\n return this\n }\n\n errors(errors?: (ModuleError | null)[]) {\n if (errors) {\n for (const error of errors) {\n if (error !== null) {\n this.error(error)\n }\n }\n }\n return this\n }\n\n hashes(hashes: Hash[], schema: Schema[]) {\n assertEx(this.payloads.length === 0, () => 'Can not set hashes when payloads already set')\n this._payloadHashes = hashes\n this._payloadSchemas = schema\n return this\n }\n\n payload(payload?: TPayload) {\n assertEx(this._payloadHashes === undefined, () => 'Can not set payloads when hashes already set')\n if (payload) {\n this._payloads.push(assertEx(sortFields<TPayload>(payload)))\n }\n return this\n }\n\n payloads(payloads?: (TPayload | null)[]) {\n if (payloads)\n for (const payload of payloads) {\n if (payload !== null) {\n this.payload(payload)\n }\n }\n return this\n }\n\n signer(account: AccountInstance) {\n uniqueAccounts([...this._accounts, account], true)\n this._accounts?.push(account)\n return this\n }\n\n signers(accounts: AccountInstance[]) {\n uniqueAccounts([...this._accounts, ...accounts], true)\n this._accounts?.push(...accounts)\n return this\n }\n\n sourceQuery(query?: Hash) {\n this._sourceQuery = query?.toLowerCase() as Hash\n return this\n }\n\n /** @deprecated use signer instead */\n witness(account: AccountInstance) {\n this._accounts?.push(account)\n return this\n }\n\n /** @deprecated use signers instead */\n witnesses(accounts: AccountInstance[]) {\n this._accounts?.push(...accounts)\n return this\n }\n\n protected override async metaFields(dataHash: Hash, stamp = true): Promise<JsonObject> {\n return await BoundWitnessBuilder.metaFields(\n dataHash,\n this._$meta,\n stamp,\n this._accounts,\n this.previousHashes,\n this._destination,\n this._sourceQuery,\n )\n }\n\n protected async signatures(_hash: Hash, previousHashes: (Hash | ArrayBuffer | null)[]): Promise<string[]> {\n uniqueAccounts(this._accounts, true)\n const hash = toArrayBuffer(_hash)\n const previousHashesBytes = previousHashes.map(ph => (ph ? toArrayBuffer(ph) : undefined))\n return await Promise.all(this._accounts.map(async (account, index) => hexFromArrayBuffer(await account.sign(hash, previousHashesBytes[index]))))\n }\n\n private async linkingFields() {\n return await BoundWitnessBuilder.linkingFields<TBoundWitness>(this._accounts, this._payloads, this.timestamp)\n }\n\n private missingSchemaMessage(payload: Payload) {\n return `Builder: Missing Schema\\n${JSON.stringify(payload, null, 2)}`\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport type { Hash } from '@xylabs/hex'\nimport type { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { QueryBoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport { PayloadBuilder } from '@xyo-network/payload'\nimport type {\n Payload, Query, WithMeta,\n} from '@xyo-network/payload-model'\n\nimport { BoundWitnessBuilder } from '../Builder.ts'\n\nexport class QueryBoundWitnessBuilder<\n TBoundWitness extends QueryBoundWitness = QueryBoundWitness,\n TQuery extends Query = Query,\n> extends BoundWitnessBuilder<TBoundWitness> {\n private _additional?: Hash[]\n private _query: WithMeta<TQuery> | undefined\n\n async additional(additional: Payload[]) {\n this._additional = await PayloadBuilder.dataHashes(additional)\n return this\n }\n\n override async dataHashableFields(): Promise<Omit<TBoundWitness, '$hash' | '$meta'>> {\n const fields = {\n ...(await super.dataHashableFields()),\n query: assertEx(this._query, () => 'No Query Specified').$hash,\n schema: QueryBoundWitnessSchema,\n } as Omit<TBoundWitness, '$hash' | '$meta'>\n if (this._additional) {\n fields.additional = this._additional\n }\n return fields\n }\n\n async query<T extends TQuery>(query: T) {\n this._query = await PayloadBuilder.build(query)\n this.payload(this._query)\n return this\n }\n}\n"],"mappings":"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","names":["assertEx","PayloadBuilder","PayloadBuilder","assertEx"]}
1
+ {"version":3,"sources":["../../src/Builder.ts","../../src/Query/QueryBoundWitnessBuilder.ts"],"sourcesContent":["import { toArrayBuffer } from '@xylabs/arraybuffer'\nimport { assertEx } from '@xylabs/assert'\nimport type { Address, Hash } from '@xylabs/hex'\nimport { hexFromArrayBuffer } from '@xylabs/hex'\nimport type { EmptyObject } from '@xylabs/object'\nimport type { AccountInstance } from '@xyo-network/account-model'\nimport {\n type BoundWitness, BoundWitnessSchema,\n type Signed,\n type UnsignedBoundWitness,\n} from '@xyo-network/boundwitness-model'\nimport { ObjectHasher, sortFields } from '@xyo-network/hash'\nimport type {\n PayloadBuilderOptions, WithOptionalSchema, WithoutSchema,\n} from '@xyo-network/payload-builder'\nimport { PayloadBuilder, PayloadBuilderBase } from '@xyo-network/payload-builder'\nimport type {\n ModuleError, Payload, Schema,\n} from '@xyo-network/payload-model'\nimport { Mutex } from 'async-mutex'\n\nexport type GeneratedBoundWitnessFields = 'addresses' | 'payload_hashes' | 'payload_schemas' | 'previous_hashes'\n\nexport interface BoundWitnessBuilderOptions<TFields extends EmptyObject = EmptyObject, TPayload extends Payload = Payload>\n extends PayloadBuilderOptions<Omit<Omit<UnsignedBoundWitness, GeneratedBoundWitnessFields>, 'schema'> & { schema?: Schema } & TFields> {\n readonly accounts?: AccountInstance[]\n readonly payloadHashes?: UnsignedBoundWitness['payload_hashes']\n readonly payloadSchemas?: UnsignedBoundWitness['payload_schemas']\n readonly payloads?: TPayload[]\n readonly timestamp?: number\n}\n\nconst uniqueAccounts = (accounts: AccountInstance[], throwOnFalse = false) => {\n const addresses = new Set<Address>()\n for (const account of accounts) {\n if (addresses.has(account.address)) {\n if (throwOnFalse) {\n throw new Error('Duplicate address')\n }\n return false\n }\n addresses.add(account.address)\n }\n return true\n}\n\nexport class BoundWitnessBuilder<\n TBoundWitness extends UnsignedBoundWitness = UnsignedBoundWitness,\n TPayload extends Payload = Payload,\n TOptions extends BoundWitnessBuilderOptions<TBoundWitness, TPayload> = BoundWitnessBuilderOptions<TBoundWitness, TPayload>>\n extends PayloadBuilderBase<\n TBoundWitness,\n TOptions\n > {\n private static readonly _buildMutex = new Mutex()\n private _accounts: AccountInstance[]\n private _destination?: Hash[]\n private _errorHashes?: Hash[]\n private _errors: ModuleError[] = []\n private _payloadHashes?: Hash[]\n private _payloadSchemas?: Schema[]\n private _payloads: TPayload[]\n private _sourceQuery?: Hash\n private _timestamp: boolean | number\n\n constructor(options?: WithOptionalSchema<TOptions>) {\n super({ ...options, schema: options?.schema ?? BoundWitnessSchema } as TOptions)\n const {\n accounts, payloadHashes, payloadSchemas, payloads, timestamp,\n } = options ?? {}\n this._accounts = accounts ?? []\n this._payloadHashes = payloadHashes\n this._payloadSchemas = payloadSchemas\n this._payloads = payloads ?? []\n this._timestamp = timestamp ?? true\n }\n\n protected get addresses(): Address[] {\n uniqueAccounts(this._accounts, true)\n return this._accounts.map(account => account.address.toLowerCase()) as Address[]\n }\n\n protected get payloadSchemas(): string[] {\n return (\n this._payloadSchemas\n ?? this._payloads.map((payload) => {\n return assertEx(payload.schema, () => this.missingSchemaMessage(payload))\n })\n )\n }\n\n protected get previousHashBytes(): (ArrayBufferLike | null)[] {\n return this._accounts.map(account => account.previousHashBytes ?? null)\n }\n\n protected get previousHashes(): (Hash | null)[] {\n return this._accounts.map(account => account.previousHash ?? null)\n }\n\n protected get timestamp(): number {\n return (this._timestamp = typeof this._timestamp === 'number' ? this._timestamp : Date.now())\n }\n\n static addressIndex<T extends BoundWitness>(payload: T, address: Address) {\n const index = payload.addresses.indexOf(address)\n if (index === -1) {\n throw new Error('Invalid address')\n }\n return index\n }\n\n static async build<TBoundWitness extends BoundWitness>(options: WithOptionalSchema<BoundWitnessBuilderOptions<TBoundWitness>>) {\n return await new BoundWitnessBuilder(options).build()\n }\n\n static previousHash<T extends BoundWitness>(boundWitness: T, address: Address) {\n return boundWitness.previous_hashes[this.addressIndex(boundWitness, address)]?.toLowerCase()\n }\n\n protected static async linkingFields<T extends BoundWitness>(\n accounts: AccountInstance[],\n payloads?: Payload[],\n ): Promise<Pick<T, GeneratedBoundWitnessFields>> {\n const addresses = accounts.map(account => hexFromArrayBuffer(account.addressBytes, { prefix: false }))\n const previous_hashes = accounts.map(account => account.previousHash ?? null)\n const payload_hashes = payloads ? await PayloadBuilder.dataHashes(payloads) : []\n const payload_schemas = payloads?.map(({ schema }) => schema) ?? []\n return {\n addresses, payload_hashes, payload_schemas, previous_hashes,\n }\n }\n\n protected static signature<T extends BoundWitness>(payload: T, address: Address) {\n return payload.$signatures[this.addressIndex(payload, address)]\n }\n\n protected static async signatures(accounts: AccountInstance[], dataHash: Hash): Promise<string[]> {\n const hashBytes = toArrayBuffer(dataHash)\n const previousHashesBytes = accounts?.map(account => account.previousHashBytes)\n return await Promise.all(accounts.map(async (account, index) => hexFromArrayBuffer((await account.sign(hashBytes, previousHashesBytes[index]))[0])))\n }\n\n private static validateGeneratedFields(fields: Pick<BoundWitness, GeneratedBoundWitnessFields>) {\n assertEx(fields.payload_hashes?.length === fields.payload_schemas?.length, () => 'Payload hash/schema mismatch')\n assertEx(!fields.payload_hashes.some(hash => !hash), () => 'nulls found in hashes')\n assertEx(!fields.payload_schemas.some(schema => !schema), () => 'nulls found in schemas')\n }\n\n async build(): Promise<[Signed<TBoundWitness>, TPayload[], ModuleError[]]> {\n return await BoundWitnessBuilder._buildMutex.runExclusive(async () => {\n const dataHashableFields = (await this.dataHashableFields()) as TBoundWitness\n const $signatures = await this.sign()\n\n const ret = { ...dataHashableFields, $signatures } as Signed<TBoundWitness>\n return [\n ret,\n this._payloads,\n this._errors,\n ]\n })\n }\n\n async dataHash() {\n const dataHashableFields = await this.dataHashableFields()\n const hash = await ObjectHasher.hash(dataHashableFields)\n return hash\n }\n\n override async dataHashableFields(): Promise<TBoundWitness> {\n const generatedFields: Pick<TBoundWitness, GeneratedBoundWitnessFields> = await this.generatedFields()\n BoundWitnessBuilder.validateGeneratedFields(generatedFields)\n const fields: WithoutSchema<TBoundWitness> = {\n ...this._fields,\n ...generatedFields,\n } as WithoutSchema<TBoundWitness>\n return await BoundWitnessBuilder.dataHashableFields<TBoundWitness>(this._schema, fields) as TBoundWitness\n }\n\n error(payload?: ModuleError) {\n assertEx(this._errorHashes === undefined, () => 'Can not set errors when hashes already set')\n if (payload) {\n this._errors.push(assertEx(sortFields(payload)))\n }\n return this\n }\n\n errors(errors?: (ModuleError | null)[]) {\n if (errors) {\n for (const error of errors) {\n if (error !== null) {\n this.error(error)\n }\n }\n }\n return this\n }\n\n hashes(hashes: Hash[], schema: Schema[]) {\n assertEx(this.payloads.length === 0, () => 'Can not set hashes when payloads already set')\n this._payloadHashes = hashes\n this._payloadSchemas = schema\n return this\n }\n\n payload(payload?: TPayload) {\n assertEx(this._payloadHashes === undefined, () => 'Can not set payloads when hashes already set')\n if (payload) {\n this._payloads.push(assertEx(sortFields<TPayload>(payload)))\n }\n return this\n }\n\n payloads(payloads?: (TPayload | null)[]) {\n if (payloads)\n for (const payload of payloads) {\n if (payload !== null) {\n this.payload(payload)\n }\n }\n return this\n }\n\n signer(account: AccountInstance) {\n uniqueAccounts([...this._accounts, account], true)\n this._accounts?.push(account)\n return this\n }\n\n signers(accounts: AccountInstance[]) {\n uniqueAccounts([...this._accounts, ...accounts], true)\n this._accounts?.push(...accounts)\n return this\n }\n\n sourceQuery(query?: Hash) {\n this._sourceQuery = query?.toLowerCase() as Hash\n return this\n }\n\n /** @deprecated use signer instead */\n witness(account: AccountInstance) {\n this._accounts?.push(account)\n return this\n }\n\n /** @deprecated use signers instead */\n witnesses(accounts: AccountInstance[]) {\n this._accounts?.push(...accounts)\n return this\n }\n\n protected async sign(): Promise<string[]> {\n uniqueAccounts(this._accounts, true)\n const hashBytes = toArrayBuffer(await this.dataHash())\n return await Promise.all(this._accounts.map(async account => hexFromArrayBuffer((await account.sign(hashBytes))[0])))\n }\n\n private async generatedFields(): Promise<Pick<TBoundWitness, GeneratedBoundWitnessFields>> {\n return await BoundWitnessBuilder.linkingFields(this._accounts, this._payloads)\n }\n\n private missingSchemaMessage(payload: Payload) {\n return `Builder: Missing Schema\\n${JSON.stringify(payload, null, 2)}`\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport type { Hash } from '@xylabs/hex'\nimport type { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { QueryBoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport { PayloadBuilder } from '@xyo-network/payload'\nimport type { Payload, Query } from '@xyo-network/payload-model'\n\nimport { BoundWitnessBuilder } from '../Builder.ts'\n\nexport class QueryBoundWitnessBuilder<\n TBoundWitness extends QueryBoundWitness = QueryBoundWitness,\n TQuery extends Query = Query,\n> extends BoundWitnessBuilder<TBoundWitness> {\n private _additional?: Hash[]\n private _query: TQuery | undefined\n\n async additional(additional: Payload[]) {\n this._additional = await PayloadBuilder.dataHashes(additional)\n return this\n }\n\n override async dataHashableFields(): Promise<TBoundWitness> {\n const fields = {\n ...(await super.dataHashableFields()),\n query: await PayloadBuilder.dataHash(assertEx(this._query, () => 'No Query Specified')),\n schema: QueryBoundWitnessSchema,\n } as TBoundWitness\n if (this._additional) {\n fields.additional = this._additional\n }\n return { ...fields } as TBoundWitness\n }\n\n query<T extends TQuery>(query: T) {\n this.payload(query)\n this._query = query\n return this\n }\n}\n"],"mappings":"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","names":["assertEx","PayloadBuilder","PayloadBuilder","assertEx"]}
@@ -1,24 +1,21 @@
1
1
  import type { Address, Hash } from '@xylabs/hex';
2
- import type { AnyObject, JsonObject } from '@xylabs/object';
2
+ import type { EmptyObject } from '@xylabs/object';
3
3
  import type { AccountInstance } from '@xyo-network/account-model';
4
- import type { BoundWitness } from '@xyo-network/boundwitness-model';
5
- import { BoundWitnessSchema } from '@xyo-network/boundwitness-model';
6
- import type { PayloadBuilderOptions, WithoutMeta, WithoutSchema } from '@xyo-network/payload-builder';
4
+ import { type BoundWitness, type Signed, type UnsignedBoundWitness } from '@xyo-network/boundwitness-model';
5
+ import type { PayloadBuilderOptions, WithOptionalSchema } from '@xyo-network/payload-builder';
7
6
  import { PayloadBuilderBase } from '@xyo-network/payload-builder';
8
- import type { ModuleError, Payload, Schema, WithMeta } from '@xyo-network/payload-model';
7
+ import type { ModuleError, Payload, Schema } from '@xyo-network/payload-model';
9
8
  export type GeneratedBoundWitnessFields = 'addresses' | 'payload_hashes' | 'payload_schemas' | 'previous_hashes';
10
- export interface BoundWitnessBuilderOptions<TBoundWitness extends BoundWitness = BoundWitness, TPayload extends Payload = Payload> extends Omit<PayloadBuilderOptions<Omit<TBoundWitness, GeneratedBoundWitnessFields>>, 'schema'> {
9
+ export interface BoundWitnessBuilderOptions<TFields extends EmptyObject = EmptyObject, TPayload extends Payload = Payload> extends PayloadBuilderOptions<Omit<Omit<UnsignedBoundWitness, GeneratedBoundWitnessFields>, 'schema'> & {
10
+ schema?: Schema;
11
+ } & TFields> {
11
12
  readonly accounts?: AccountInstance[];
12
- readonly destination?: Hash[];
13
- readonly payloadHashes?: TBoundWitness['payload_hashes'];
14
- readonly payloadSchemas?: TBoundWitness['payload_schemas'];
13
+ readonly payloadHashes?: UnsignedBoundWitness['payload_hashes'];
14
+ readonly payloadSchemas?: UnsignedBoundWitness['payload_schemas'];
15
15
  readonly payloads?: TPayload[];
16
- readonly sourceQuery?: Hash;
17
16
  readonly timestamp?: number;
18
17
  }
19
- export declare class BoundWitnessBuilder<TBoundWitness extends BoundWitness = BoundWitness, TPayload extends Payload = Payload> extends PayloadBuilderBase<Omit<TBoundWitness, GeneratedBoundWitnessFields>, BoundWitnessBuilderOptions<TBoundWitness> & {
20
- schema: BoundWitnessSchema;
21
- }> {
18
+ export declare class BoundWitnessBuilder<TBoundWitness extends UnsignedBoundWitness = UnsignedBoundWitness, TPayload extends Payload = Payload, TOptions extends BoundWitnessBuilderOptions<TBoundWitness, TPayload> = BoundWitnessBuilderOptions<TBoundWitness, TPayload>> extends PayloadBuilderBase<TBoundWitness, TOptions> {
22
19
  private static readonly _buildMutex;
23
20
  private _accounts;
24
21
  private _destination?;
@@ -29,32 +26,33 @@ export declare class BoundWitnessBuilder<TBoundWitness extends BoundWitness = Bo
29
26
  private _payloads;
30
27
  private _sourceQuery?;
31
28
  private _timestamp;
32
- constructor(options?: BoundWitnessBuilderOptions<TBoundWitness, TPayload>);
29
+ constructor(options?: WithOptionalSchema<TOptions>);
33
30
  protected get addresses(): Address[];
34
31
  protected get payloadSchemas(): string[];
35
- protected get previousHashBuffers(): (ArrayBufferLike | null)[];
32
+ protected get previousHashBytes(): (ArrayBufferLike | null)[];
36
33
  protected get previousHashes(): (Hash | null)[];
37
34
  protected get timestamp(): number;
38
35
  static addressIndex<T extends BoundWitness>(payload: T, address: Address): number;
39
- static build<TBoundWitness extends BoundWitness>(options: BoundWitnessBuilderOptions<TBoundWitness>): Promise<[WithMeta<TBoundWitness>, WithMeta<{
36
+ static build<TBoundWitness extends BoundWitness>(options: WithOptionalSchema<BoundWitnessBuilderOptions<TBoundWitness>>): Promise<[Signed<import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & import("@xyo-network/boundwitness-model").BoundWitnessFields & {
37
+ schema: "network.xyo.boundwitness";
38
+ }>, ({
40
39
  schema: string;
41
- } & import("@xyo-network/payload-model").PayloadFields>[], WithMeta<import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & {
40
+ } & import("@xyo-network/payload-model").PayloadFields)[], (import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & {
42
41
  details?: import("@xylabs/object").JsonValue;
43
42
  message?: string;
44
43
  name?: string;
45
44
  query?: Hash;
46
45
  schema: import("@xyo-network/payload-model").ModuleErrorSchema;
47
46
  sources?: Hash[];
48
- }>[]]>;
49
- static dataHashableFields<T extends Payload = Payload<AnyObject>>(schema: string, fields?: WithoutSchema<WithoutMeta<T>>): Promise<WithoutMeta<T>>;
47
+ })[]]>;
50
48
  static previousHash<T extends BoundWitness>(boundWitness: T, address: Address): string | undefined;
51
- protected static linkingFields<T extends BoundWitness = BoundWitness>(accounts: AccountInstance[], payloads?: Payload[], timestamp?: number): Promise<WithoutSchema<WithoutMeta<T>>>;
52
- protected static metaFields(dataHash: Hash, otherMeta?: JsonObject, stamp?: boolean, accounts?: AccountInstance[], previousHashes?: (Hash | null)[], destination?: Address[], sourceQuery?: Hash): Promise<JsonObject>;
49
+ protected static linkingFields<T extends BoundWitness>(accounts: AccountInstance[], payloads?: Payload[]): Promise<Pick<T, GeneratedBoundWitnessFields>>;
53
50
  protected static signature<T extends BoundWitness>(payload: T, address: Address): Lowercase<string>;
54
- protected static signatures(accounts: AccountInstance[], hash: Hash, previousHashes: (Hash | ArrayBuffer | null)[]): Promise<string[]>;
55
- private static validateLinkingFields;
56
- build(): Promise<[WithMeta<TBoundWitness>, WithMeta<TPayload>[], WithMeta<ModuleError>[]]>;
57
- dataHashableFields(): Promise<WithoutMeta<TBoundWitness>>;
51
+ protected static signatures(accounts: AccountInstance[], dataHash: Hash): Promise<string[]>;
52
+ private static validateGeneratedFields;
53
+ build(): Promise<[Signed<TBoundWitness>, TPayload[], ModuleError[]]>;
54
+ dataHash(): Promise<Lowercase<string>>;
55
+ dataHashableFields(): Promise<TBoundWitness>;
58
56
  error(payload?: ModuleError): this;
59
57
  errors(errors?: (ModuleError | null)[]): this;
60
58
  hashes(hashes: Hash[], schema: Schema[]): this;
@@ -67,9 +65,8 @@ export declare class BoundWitnessBuilder<TBoundWitness extends BoundWitness = Bo
67
65
  witness(account: AccountInstance): this;
68
66
  /** @deprecated use signers instead */
69
67
  witnesses(accounts: AccountInstance[]): this;
70
- protected metaFields(dataHash: Hash, stamp?: boolean): Promise<JsonObject>;
71
- protected signatures(_hash: Hash, previousHashes: (Hash | ArrayBuffer | null)[]): Promise<string[]>;
72
- private linkingFields;
68
+ protected sign(): Promise<string[]>;
69
+ private generatedFields;
73
70
  private missingSchemaMessage;
74
71
  }
75
72
  //# sourceMappingURL=Builder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Builder.d.ts","sourceRoot":"","sources":["../../src/Builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Builder.d.ts","sourceRoot":"","sources":["../../src/Builder.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ export declare class QueryBoundWitnessBuilder<TBoundWitness extends QueryBoundWi
5
5
  private _additional?;
6
6
  private _query;
7
7
  additional(additional: Payload[]): Promise<this>;
8
- dataHashableFields(): Promise<Omit<TBoundWitness, '$hash' | '$meta'>>;
9
- query<T extends TQuery>(query: T): Promise<this>;
8
+ dataHashableFields(): Promise<TBoundWitness>;
9
+ query<T extends TQuery>(query: T): this;
10
10
  }
11
11
  //# sourceMappingURL=QueryBoundWitnessBuilder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"QueryBoundWitnessBuilder.d.ts","sourceRoot":"","sources":["../../../src/Query/QueryBoundWitnessBuilder.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAGxE,OAAO,KAAK,EACV,OAAO,EAAE,KAAK,EACf,MAAM,4BAA4B,CAAA;AAEnC,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAEnD,qBAAa,wBAAwB,CACnC,aAAa,SAAS,iBAAiB,GAAG,iBAAiB,EAC3D,MAAM,SAAS,KAAK,GAAG,KAAK,CAC5B,SAAQ,mBAAmB,CAAC,aAAa,CAAC;IAC1C,OAAO,CAAC,WAAW,CAAC,CAAQ;IAC5B,OAAO,CAAC,MAAM,CAA8B;IAEtC,UAAU,CAAC,UAAU,EAAE,OAAO,EAAE;IAKvB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC;IAY9E,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,CAAC;CAKvC"}
1
+ {"version":3,"file":"QueryBoundWitnessBuilder.d.ts","sourceRoot":"","sources":["../../../src/Query/QueryBoundWitnessBuilder.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAGxE,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAEhE,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAEnD,qBAAa,wBAAwB,CACnC,aAAa,SAAS,iBAAiB,GAAG,iBAAiB,EAC3D,MAAM,SAAS,KAAK,GAAG,KAAK,CAC5B,SAAQ,mBAAmB,CAAC,aAAa,CAAC;IAC1C,OAAO,CAAC,WAAW,CAAC,CAAQ;IAC5B,OAAO,CAAC,MAAM,CAAoB;IAE5B,UAAU,CAAC,UAAU,EAAE,OAAO,EAAE;IAKvB,kBAAkB,IAAI,OAAO,CAAC,aAAa,CAAC;IAY3D,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,CAAC;CAKjC"}