UNPKG

6.44 kBJavaScriptView Raw
1import { IOHelper, JSONHelper, WitnessModel } from '@neo-one/client-common-esnext-esm';
2import { BinaryReader, utils } from './utils';
3export class Witness extends WitnessModel {
4 constructor() {
5 super(...arguments);
6 this.equals = utils.equals(Witness, this, (other) => this.invocation.equals(other.invocation) && this.verification.equals(other.verification));
7 this.toKeyString = utils.toKeyString(Witness, () => `${this.invocation.toString('hex')}:${this.verification.toString('hex')}`);
8 this.sizeInternal = utils.lazy(() => IOHelper.sizeOfVarBytesLE(this.invocation) + IOHelper.sizeOfVarBytesLE(this.verification));
9 }
10 static deserializeWireBase({ reader }) {
11 const invocation = reader.readVarBytesLE(utils.USHORT_MAX_NUMBER_PLUS_ONE);
12 const verification = reader.readVarBytesLE(utils.USHORT_MAX_NUMBER_PLUS_ONE);
13 return new this({ invocation, verification });
14 }
15 static deserializeWire(options) {
16 return this.deserializeWireBase({
17 context: options.context,
18 reader: new BinaryReader(options.buffer),
19 });
20 }
21 static fromModel(witness) {
22 return new this({ invocation: witness.invocation, verification: witness.verification });
23 }
24 get size() {
25 return this.sizeInternal();
26 }
27 serializeJSON(_context) {
28 return {
29 invocation: JSONHelper.writeBuffer(this.invocation),
30 verification: JSONHelper.writeBuffer(this.verification),
31 };
32 }
33}
34
35//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIldpdG5lc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQWUsWUFBWSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFRcEcsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFPOUMsTUFBTSxPQUFPLE9BQVEsU0FBUSxZQUFZO0lBQXpDOztRQW1Ca0IsV0FBTSxHQUFXLEtBQUssQ0FBQyxNQUFNLENBQzNDLE9BQU8sRUFDUCxJQUFJLEVBQ0osQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQ3BHLENBQUM7UUFDYyxnQkFBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQzdDLE9BQU8sRUFDUCxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQ2hGLENBQUM7UUFDZSxpQkFBWSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQ3hDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsUUFBUSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FDaEcsQ0FBQztJQVlKLENBQUM7SUF6Q1EsTUFBTSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsTUFBTSxFQUE4QjtRQUN0RSxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQzNFLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFFN0UsT0FBTyxJQUFJLElBQUksQ0FBQyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFTSxNQUFNLENBQUMsZUFBZSxDQUFDLE9BQStCO1FBQzNELE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDO1lBQzlCLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztZQUN4QixNQUFNLEVBQUUsSUFBSSxZQUFZLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztTQUN6QyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFxQjtRQUMzQyxPQUFPLElBQUksSUFBSSxDQUFDLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVLEVBQUUsWUFBWSxFQUFFLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO0lBQzFGLENBQUM7SUFlRCxJQUFXLElBQUk7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRU0sYUFBYSxDQUFDLFFBQThCO1FBQ2pELE9BQU87WUFDTCxVQUFVLEVBQUUsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQ25ELFlBQVksRUFBRSxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7U0FDeEQsQ0FBQztJQUNKLENBQUM7Q0FDRiIsImZpbGUiOiJuZW8tb25lLW5vZGUtY29yZS9zcmMvV2l0bmVzcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElPSGVscGVyLCBKU09OSGVscGVyLCBXaXRuZXNzSlNPTiwgV2l0bmVzc01vZGVsIH0gZnJvbSAnQG5lby1vbmUvY2xpZW50LWNvbW1vbi1lc25leHQtZXNtJztcbmltcG9ydCB7IEVxdWFscywgRXF1YXRhYmxlS2V5IH0gZnJvbSAnLi9FcXVhdGFibGUnO1xuaW1wb3J0IHtcbiAgRGVzZXJpYWxpemVXaXJlQmFzZU9wdGlvbnMsXG4gIERlc2VyaWFsaXplV2lyZU9wdGlvbnMsXG4gIFNlcmlhbGl6YWJsZUpTT04sXG4gIFNlcmlhbGl6ZUpTT05Db250ZXh0LFxufSBmcm9tICcuL1NlcmlhbGl6YWJsZSc7XG5pbXBvcnQgeyBCaW5hcnlSZWFkZXIsIHV0aWxzIH0gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2l0bmVzc0FkZCB7XG4gIHJlYWRvbmx5IHZlcmlmaWNhdGlvbjogQnVmZmVyO1xuICByZWFkb25seSBpbnZvY2F0aW9uOiBCdWZmZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBXaXRuZXNzIGV4dGVuZHMgV2l0bmVzc01vZGVsIGltcGxlbWVudHMgU2VyaWFsaXphYmxlSlNPTjxXaXRuZXNzSlNPTj4sIEVxdWF0YWJsZUtleSB7XG4gIHB1YmxpYyBzdGF0aWMgZGVzZXJpYWxpemVXaXJlQmFzZSh7IHJlYWRlciB9OiBEZXNlcmlhbGl6ZVdpcmVCYXNlT3B0aW9ucyk6IFdpdG5lc3Mge1xuICAgIGNvbnN0IGludm9jYXRpb24gPSByZWFkZXIucmVhZFZhckJ5dGVzTEUodXRpbHMuVVNIT1JUX01BWF9OVU1CRVJfUExVU19PTkUpO1xuICAgIGNvbnN0IHZlcmlmaWNhdGlvbiA9IHJlYWRlci5yZWFkVmFyQnl0ZXNMRSh1dGlscy5VU0hPUlRfTUFYX05VTUJFUl9QTFVTX09ORSk7XG5cbiAgICByZXR1cm4gbmV3IHRoaXMoeyBpbnZvY2F0aW9uLCB2ZXJpZmljYXRpb24gfSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGRlc2VyaWFsaXplV2lyZShvcHRpb25zOiBEZXNlcmlhbGl6ZVdpcmVPcHRpb25zKTogV2l0bmVzcyB7XG4gICAgcmV0dXJuIHRoaXMuZGVzZXJpYWxpemVXaXJlQmFzZSh7XG4gICAgICBjb250ZXh0OiBvcHRpb25zLmNvbnRleHQsXG4gICAgICByZWFkZXI6IG5ldyBCaW5hcnlSZWFkZXIob3B0aW9ucy5idWZmZXIpLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBmcm9tTW9kZWwod2l0bmVzczogV2l0bmVzc01vZGVsKTogV2l0bmVzcyB7XG4gICAgcmV0dXJuIG5ldyB0aGlzKHsgaW52b2NhdGlvbjogd2l0bmVzcy5pbnZvY2F0aW9uLCB2ZXJpZmljYXRpb246IHdpdG5lc3MudmVyaWZpY2F0aW9uIH0pO1xuICB9XG5cbiAgcHVibGljIHJlYWRvbmx5IGVxdWFsczogRXF1YWxzID0gdXRpbHMuZXF1YWxzKFxuICAgIFdpdG5lc3MsXG4gICAgdGhpcyxcbiAgICAob3RoZXIpID0+IHRoaXMuaW52b2NhdGlvbi5lcXVhbHMob3RoZXIuaW52b2NhdGlvbikgJiYgdGhpcy52ZXJpZmljYXRpb24uZXF1YWxzKG90aGVyLnZlcmlmaWNhdGlvbiksXG4gICk7XG4gIHB1YmxpYyByZWFkb25seSB0b0tleVN0cmluZyA9IHV0aWxzLnRvS2V5U3RyaW5nKFxuICAgIFdpdG5lc3MsXG4gICAgKCkgPT4gYCR7dGhpcy5pbnZvY2F0aW9uLnRvU3RyaW5nKCdoZXgnKX06JHt0aGlzLnZlcmlmaWNhdGlvbi50b1N0cmluZygnaGV4Jyl9YCxcbiAgKTtcbiAgcHJpdmF0ZSByZWFkb25seSBzaXplSW50ZXJuYWwgPSB1dGlscy5sYXp5KFxuICAgICgpID0+IElPSGVscGVyLnNpemVPZlZhckJ5dGVzTEUodGhpcy5pbnZvY2F0aW9uKSArIElPSGVscGVyLnNpemVPZlZhckJ5dGVzTEUodGhpcy52ZXJpZmljYXRpb24pLFxuICApO1xuXG4gIHB1YmxpYyBnZXQgc2l6ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnNpemVJbnRlcm5hbCgpO1xuICB9XG5cbiAgcHVibGljIHNlcmlhbGl6ZUpTT04oX2NvbnRleHQ6IFNlcmlhbGl6ZUpTT05Db250ZXh0KTogV2l0bmVzc0pTT04ge1xuICAgIHJldHVybiB7XG4gICAgICBpbnZvY2F0aW9uOiBKU09OSGVscGVyLndyaXRlQnVmZmVyKHRoaXMuaW52b2NhdGlvbiksXG4gICAgICB2ZXJpZmljYXRpb246IEpTT05IZWxwZXIud3JpdGVCdWZmZXIodGhpcy52ZXJpZmljYXRpb24pLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==