wowok 1.0.3 → 1.0.4

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.
package/src/demand.ts CHANGED
@@ -1,173 +1,217 @@
1
- import { SuiClient, getFullnodeUrl, SuiObjectResponse } from '@mysten/sui.js/client';
2
1
  import { TransactionBlock, Inputs, type TransactionResult } from '@mysten/sui.js/transactions';
3
2
  import { BCS } from '@mysten/bcs';
4
- import { CLOCK_OBJECT, FnCallType, PROTOCOL, description_data} from './protocol';
5
- import { GuardObject } from './protocol';
6
- import { verify, PassportObject} from './passport'
7
- import { PermissionIndex, PermissionObject } from './permission'
8
- import { ServiceObject } from './service'
9
-
10
- export type DemandAddress = TransactionResult;
11
- export type DemandObject = TransactionResult;
3
+ import { CLOCK_OBJECT, FnCallType, IsValidDesription, PROTOCOL, PassportObject, PermissionObject, IsValidArgType, GuardObject,
4
+ DemandAddress, DemandObject, TXB_OBJECT, IsValidUint, IsValidAddress, TxbObject, IsValidObjects, ServiceObject } from './protocol';
12
5
 
13
6
  export const MAX_EARNEST_COUNT = 200;
14
7
  export const MAX_PRESENTERS_COUNT = 200;
15
8
 
16
- export function demand(earnest_type:string, txb:TransactionBlock, permission:TransactionResult, description:string, earnest:TransactionResult, passport?:PassportObject) : DemandObject {
9
+
10
+ export function demand(earnest_type:string, txb:TransactionBlock, permission:PermissionObject, description:string,
11
+ earnest:TransactionResult, passport?:PassportObject) : DemandObject | boolean {
12
+ if (!IsValidObjects([permission, earnest])) return false;
13
+ if (!IsValidDesription(description) || !IsValidArgType(earnest_type)) return false;
14
+
17
15
  if (passport) {
18
16
  return txb.moveCall({
19
17
  target:PROTOCOL.DemandFn('new_with_passport') as FnCallType,
20
- arguments:[passport, txb.pure(description_data(description)), earnest, permission],
18
+ arguments:[passport, txb.pure(description), earnest, TXB_OBJECT(txb, permission)],
21
19
  typeArguments:[earnest_type],
22
20
  })
23
21
  } else {
24
22
  return txb.moveCall({
25
23
  target:PROTOCOL.DemandFn('new') as FnCallType,
26
- arguments:[txb.pure(description_data(description)), earnest, permission],
24
+ arguments:[txb.pure(description), earnest, TXB_OBJECT(txb, permission)],
27
25
  typeArguments:[earnest_type],
28
26
  })
29
27
  }
30
28
  }
31
29
 
32
- export function launch(earnest_type:string, txb:TransactionBlock, demand:DemandObject) : DemandAddress {
30
+ export function launch(earnest_type:string, txb:TransactionBlock, demand:DemandObject) : DemandAddress | boolean {
31
+ if (!IsValidObjects([demand])) return false;
32
+ if (!IsValidArgType(earnest_type)) return false;
33
33
  return txb.moveCall({
34
34
  target:PROTOCOL.DemandFn('create') as FnCallType,
35
- arguments:[demand],
35
+ arguments:[TXB_OBJECT(txb, demand)],
36
36
  typeArguments:[earnest_type],
37
37
  })
38
38
  }
39
39
 
40
- export function destroy(earnest_type:string, txb:TransactionBlock, demand:DemandObject) {
41
- return txb.moveCall({
40
+ export function destroy(earnest_type:string, txb:TransactionBlock, demand:DemandObject) : boolean {
41
+ if (!IsValidObjects([demand])) return false;
42
+ if (!IsValidArgType(earnest_type)) return false;
43
+ txb.moveCall({
42
44
  target:PROTOCOL.DemandFn('destroy') as FnCallType,
43
- arguments: [demand],
45
+ arguments: [TXB_OBJECT(txb, demand)],
44
46
  typeArguments:[earnest_type]
45
- })
47
+ })
48
+ return true
46
49
  }
47
- export function demand_refund(earnest_type:string, txb:TransactionBlock, demand:DemandObject, permission:TransactionResult, passport?:PassportObject) {
50
+ export function demand_refund(earnest_type:string, txb:TransactionBlock, demand:DemandObject, permission:PermissionObject,
51
+ passport?:PassportObject) : boolean {
52
+ if (!IsValidObjects([demand, permission])) return false;
53
+ if (!IsValidArgType(earnest_type)) return false;
54
+
48
55
  if (passport) {
49
56
  txb.moveCall({
50
57
  target:PROTOCOL.DemandFn('refund_with_passport') as FnCallType,
51
- arguments:[passport, demand, txb.object(CLOCK_OBJECT), permission],
58
+ arguments:[passport, TXB_OBJECT(txb, demand), txb.object(CLOCK_OBJECT), TXB_OBJECT(txb, permission)],
52
59
  typeArguments:[earnest_type],
53
60
  })
54
61
  } else {
55
62
  txb.moveCall({
56
63
  target:PROTOCOL.DemandFn('refund') as FnCallType,
57
- arguments:[demand, txb.object(CLOCK_OBJECT), permission],
64
+ arguments:[TXB_OBJECT(txb, demand), txb.object(CLOCK_OBJECT), TXB_OBJECT(txb, permission)],
58
65
  typeArguments:[earnest_type],
59
66
  })
60
67
  }
68
+ return true
61
69
  }
62
70
 
63
- export function demand_expand_time(earnest_type:string, txb:TransactionBlock, demand:DemandObject, permission:TransactionResult,
64
- minutes_duration:number, passport?:PassportObject) {
71
+ export function demand_expand_time(earnest_type:string, txb:TransactionBlock, demand:DemandObject, permission:PermissionObject,
72
+ minutes_duration:number, passport?:PassportObject) : boolean {
73
+ if (!IsValidObjects([demand, permission])) return false;
74
+ if (!IsValidArgType(earnest_type)) return false;
75
+ if (!IsValidUint(minutes_duration)) return false;
76
+
65
77
  if (passport) {
66
- return txb.moveCall({
78
+ txb.moveCall({
67
79
  target:PROTOCOL.DemandFn('time_expand_with_passport') as FnCallType,
68
- arguments:[passport, demand, txb.pure(minutes_duration, BCS.U64), txb.object(CLOCK_OBJECT), permission],
80
+ arguments:[passport, TXB_OBJECT(txb, demand), txb.pure(minutes_duration, BCS.U64), txb.object(CLOCK_OBJECT), TXB_OBJECT(txb, permission)],
69
81
  typeArguments:[earnest_type],
70
82
  })
71
83
  } else {
72
- return txb.moveCall({
84
+ txb.moveCall({
73
85
  target:PROTOCOL.DemandFn('time_expand') as FnCallType,
74
- arguments:[demand, txb.pure(minutes_duration, BCS.U64), txb.object(CLOCK_OBJECT), permission],
86
+ arguments:[TXB_OBJECT(txb, demand), txb.pure(minutes_duration, BCS.U64), txb.object(CLOCK_OBJECT), TXB_OBJECT(txb, permission)],
75
87
  typeArguments:[earnest_type],
76
88
  })
77
89
  }
90
+ return true
78
91
  }
79
92
 
80
- export function demand_set_guard(earnest_type:string, txb:TransactionBlock, demand:DemandObject, permission:TransactionResult, guard?:GuardObject, passport?:PassportObject) {
93
+ export function demand_set_guard(earnest_type:string, txb:TransactionBlock, demand:DemandObject, permission:PermissionObject,
94
+ guard?:GuardObject, passport?:PassportObject) : boolean {
95
+ if (!IsValidObjects([demand, permission])) return false;
96
+ if (!IsValidArgType(earnest_type)) return false;
97
+
81
98
  if (passport) {
82
99
  if (guard) {
83
- return txb.moveCall({
100
+ txb.moveCall({
84
101
  target:PROTOCOL.DemandFn('guard_set_with_passport') as FnCallType,
85
- arguments:[passport, demand, guard, permission],
102
+ arguments:[passport, TXB_OBJECT(txb, demand), TXB_OBJECT(txb, guard), TXB_OBJECT(txb, permission)],
86
103
  typeArguments:[earnest_type],
87
104
  })
88
105
  } else {
89
- return txb.moveCall({
106
+ txb.moveCall({
90
107
  target:PROTOCOL.DemandFn('guard_none_with_passport') as FnCallType,
91
- arguments:[passport, demand, permission],
108
+ arguments:[passport, TXB_OBJECT(txb, demand), TXB_OBJECT(txb, permission)],
92
109
  typeArguments:[earnest_type],
93
110
  })
94
111
  }
95
112
  } else {
96
113
  if (guard) {
97
- return txb.moveCall({
114
+ txb.moveCall({
98
115
  target:PROTOCOL.DemandFn('guard_set') as FnCallType,
99
- arguments:[demand, guard, permission],
116
+ arguments:[TXB_OBJECT(txb, demand), TXB_OBJECT(txb, guard), TXB_OBJECT(txb, permission)],
100
117
  typeArguments:[earnest_type],
101
118
  })
102
119
  } else {
103
- return txb.moveCall({
120
+ txb.moveCall({
104
121
  target:PROTOCOL.DemandFn('guard_none') as FnCallType,
105
- arguments:[demand, permission],
122
+ arguments:[TXB_OBJECT(txb, demand), TXB_OBJECT(txb, permission)],
106
123
  typeArguments:[earnest_type],
107
124
  })
108
125
  }
109
126
  }
127
+ return true
110
128
  }
111
129
 
112
- export function demand_set_description(earnest_type:string, txb:TransactionBlock, demand:DemandObject, permission:TransactionResult, description:string, passport?:PassportObject) {
130
+ export function demand_set_description(earnest_type:string, txb:TransactionBlock, demand:DemandObject,
131
+ permission:PermissionObject, description:string, passport?:PassportObject) : boolean {
132
+ if (!IsValidObjects([demand, permission])) return false;
133
+ if (!IsValidArgType(earnest_type)) return false;
134
+ if (!IsValidDesription(description)) return false;
135
+
113
136
  if (passport) {
114
137
  txb.moveCall({
115
138
  target:PROTOCOL.DemandFn('description_set_with_passport') as FnCallType,
116
- arguments:[passport, demand, txb.pure(description_data(description)), permission],
139
+ arguments:[passport, TXB_OBJECT(txb, demand), txb.pure(description), TXB_OBJECT(txb, permission)],
117
140
  typeArguments:[earnest_type],
118
141
  })
119
142
  } else {
120
143
  txb.moveCall({
121
144
  target:PROTOCOL.DemandFn('description_set') as FnCallType,
122
- arguments:[demand, txb.pure(description_data(description)), permission],
145
+ arguments:[TXB_OBJECT(txb, demand), txb.pure(description), TXB_OBJECT(txb, permission)],
123
146
  typeArguments:[earnest_type],
124
147
  })
125
148
  }
149
+ return true
126
150
  }
127
151
 
128
- export function demand_yes(earnest_type:string, txb:TransactionBlock, demand:DemandObject, permission:TransactionResult, service:string, passport?:PassportObject) {
152
+ export function demand_yes(earnest_type:string, txb:TransactionBlock, demand:DemandObject, permission:PermissionObject,
153
+ service:string, passport?:PassportObject) : boolean {
154
+ if (!IsValidObjects([demand, permission])) return false;
155
+ if (!IsValidArgType(earnest_type)) return false;
156
+ if (!IsValidAddress(service)) return false;
157
+
129
158
  if (passport) {
130
159
  txb.moveCall({
131
160
  target:PROTOCOL.DemandFn('yes_with_passport') as FnCallType,
132
- arguments:[passport, demand, txb.pure(service, BCS.ADDRESS), permission],
161
+ arguments:[passport, TXB_OBJECT(txb, demand), txb.pure(service, BCS.ADDRESS), TXB_OBJECT(txb, permission)],
133
162
  typeArguments:[earnest_type],
134
163
  })
135
164
  } else {
136
165
  txb.moveCall({
137
166
  target:PROTOCOL.DemandFn('yes') as FnCallType,
138
- arguments:[demand, txb.pure(service, BCS.ADDRESS), permission],
167
+ arguments:[TXB_OBJECT(txb, demand), txb.pure(service, BCS.ADDRESS), TXB_OBJECT(txb, permission)],
139
168
  typeArguments:[earnest_type],
140
169
  })
141
170
  }
171
+ return true
142
172
  }
143
173
 
144
- export function deposit(earnest_type:string, txb:TransactionBlock, demand:DemandObject, earnest:TransactionResult) {
145
- return txb.moveCall({
174
+ export function deposit(earnest_type:string, txb:TransactionBlock, demand:DemandObject, earnest:TxbObject) : boolean {
175
+ if (!IsValidObjects([demand, earnest])) return false;
176
+ if (!IsValidArgType(earnest_type)) return false;
177
+ txb.moveCall({
146
178
  target:PROTOCOL.DemandFn('deposit') as FnCallType,
147
- arguments:[demand, earnest],
179
+ arguments:[TXB_OBJECT(txb, demand), TXB_OBJECT(txb, earnest)],
148
180
  typeArguments:[earnest_type],
149
181
  })
182
+ return true
150
183
  }
151
184
 
152
- export function present(earnest_type:string, service_type:string, txb:TransactionBlock, demand:DemandObject, service:ServiceObject, tips:string, passport?:PassportObject) {
185
+ export function present(earnest_type:string, service_type:string, txb:TransactionBlock, demand:DemandObject,
186
+ service:ServiceObject, tips:string, passport?:PassportObject) : boolean {
187
+ if (!IsValidObjects([demand, service])) return false;
188
+ if (!IsValidArgType(earnest_type)) return false;
189
+ if (!IsValidDesription(tips)) return false;
190
+
153
191
  if (passport) {
154
- return txb.moveCall({
192
+ txb.moveCall({
155
193
  target:PROTOCOL.DemandFn('present_with_passport') as FnCallType,
156
- arguments:[passport, demand, service, txb.pure(description_data(tips)), ],
194
+ arguments:[passport, TXB_OBJECT(txb, demand), TXB_OBJECT(txb, service), txb.pure(tips), ],
157
195
  typeArguments:[earnest_type, service_type],
158
196
  })
159
197
  } else {
160
- return txb.moveCall({
198
+ txb.moveCall({
161
199
  target:PROTOCOL.DemandFn('present') as FnCallType,
162
- arguments:[demand, service, txb.pure(description_data(tips)), ],
200
+ arguments:[TXB_OBJECT(txb, demand), TXB_OBJECT(txb, service), txb.pure(tips), ],
163
201
  typeArguments:[earnest_type, service_type],
164
202
  })
165
203
  }
204
+ return true
166
205
  }
167
- export function change_permission(earnest_type:string, txb:TransactionBlock, demand:DemandObject, old_permission:PermissionObject, new_permission:PermissionObject) {
206
+ export function change_permission(earnest_type:string, txb:TransactionBlock, demand:DemandObject,
207
+ old_permission:PermissionObject, new_permission:PermissionObject) : boolean {
208
+ if (!IsValidObjects([demand, old_permission, new_permission])) return false;
209
+ if (!IsValidArgType(earnest_type)) return false;
210
+
168
211
  txb.moveCall({
169
212
  target:PROTOCOL.DemandFn('permission_set') as FnCallType,
170
- arguments: [demand, old_permission, new_permission],
213
+ arguments: [TXB_OBJECT(txb, demand), TXB_OBJECT(txb, old_permission), TXB_OBJECT(txb, new_permission)],
171
214
  typeArguments:[earnest_type]
172
215
  })
216
+ return true
173
217
  }
package/src/guard.ts CHANGED
@@ -1,13 +1,16 @@
1
1
  import { SuiObjectResponse, SuiObjectDataOptions, SuiParsedData } from '@mysten/sui.js/client';
2
2
  import { TransactionBlock, Inputs, type TransactionResult } from '@mysten/sui.js/transactions';
3
3
  import { BCS, getSuiMoveConfig, toHEX, fromHEX, BcsReader } from '@mysten/bcs';
4
- import { PROTOCOL, GuardAddress, FnCallType, Data_Type, MODULES, GuardObject, OBJECTS_TYPE, OBJECTS_TYPE_PREFIX, Query_Param} from './protocol';
4
+ import { PROTOCOL, GuardAddress, FnCallType, Data_Type, MODULES, ContextType, OBJECTS_TYPE,
5
+ OBJECTS_TYPE_PREFIX, Query_Param, IsValidDesription, ValueType, OperatorType} from './protocol';
5
6
  import { concatenate, array_equal, ulebDecode, array_unique } from './util';
6
7
  import { TransactionBlockDataBuilder } from '@mysten/sui.js/dist/cjs/builder/TransactionBlockData';
7
8
 
9
+ export const MAX_SENSE_COUNT = 16;
10
+
8
11
  export enum Guard_Sense_Binder {
9
- AND = 1, // first sense of guard always AND; for combining other guards
10
- OR = 2,
12
+ AND = 0, // first sense of guard always AND; for combining other guards
13
+ OR = 1,
11
14
  }
12
15
 
13
16
  export type Guard_Sense = {
@@ -21,15 +24,23 @@ export type Guard_Creation = {
21
24
  senses: Guard_Sense[];
22
25
  }
23
26
 
24
- export function launch(txb:TransactionBlock, creation:Guard_Creation) : GuardAddress {
25
- var guard = txb.moveCall({
27
+ export function launch(txb:TransactionBlock, creation:Guard_Creation) : GuardAddress | boolean {
28
+ if (!IsValidDesription(creation.description)) return false;
29
+ if (!creation.senses) return false;
30
+ let bValid = true;
31
+ creation.senses.forEach((v) => {
32
+ if (v.input.length == 0) bValid = false;
33
+ })
34
+ if (!bValid) return false;
35
+
36
+ let guard = txb.moveCall({
26
37
  target: PROTOCOL.GuardFn('new') as FnCallType,
27
- arguments: [ txb.pure(creation.description , BCS.STRING), ],
38
+ arguments: [txb.pure(creation.description , BCS.STRING)],
28
39
  });
29
- creation?.senses.forEach((sense: Guard_Sense) => {
40
+ creation.senses.forEach((sense: Guard_Sense) => {
30
41
  txb.moveCall({
31
42
  target: PROTOCOL.GuardFn('sense_add') as FnCallType,
32
- arguments:[ guard, txb.pure([].slice.call(sense.input)),
43
+ arguments:[guard, txb.pure([].slice.call(sense.input)),
33
44
  txb.pure(sense.notAfterSense, BCS.BOOL),
34
45
  txb.pure(sense.binder, BCS.U8),
35
46
  ]
@@ -41,18 +52,12 @@ export function launch(txb:TransactionBlock, creation:Guard_Creation) : GuardAdd
41
52
  });
42
53
  }
43
54
 
44
- export function signer_guard(txb:TransactionBlock) {
55
+ export function signer_guard(txb:TransactionBlock) : boolean {
45
56
  txb.moveCall({
46
57
  target: PROTOCOL.GuardFn('signer_guard') as FnCallType,
47
58
  arguments: []
48
59
  }); // { kind: 'Result', index: 0 }, ref to address could used by PTB
49
- }
50
-
51
- export function query_description(txb:TransactionBlock, guard:GuardObject) {
52
- txb.moveCall({
53
- target: PROTOCOL.GuardFn('description') as FnCallType,
54
- arguments:[guard]
55
- })
60
+ return true
56
61
  }
57
62
 
58
63
  export type Sense_Cmd_Type = {
@@ -63,23 +68,23 @@ export type Sense_Cmd_Type = {
63
68
  result:Data_Type
64
69
  };
65
70
 
66
- export const Sense_Cmd:any = [ [MODULES.permission, 'creator', 1, [], Data_Type.TYPE_STATIC_address],
67
- [MODULES.permission, 'is_admin', 2, [Data_Type.TYPE_STATIC_address], Data_Type.TYPE_STATIC_bool],
68
- [MODULES.permission, 'has_rights', 3, [Data_Type.TYPE_STATIC_address, Data_Type.TYPE_STATIC_u64], Data_Type.TYPE_STATIC_bool],
69
- [MODULES.permission, 'contains_address', 4, [Data_Type.TYPE_STATIC_address], Data_Type.TYPE_STATIC_bool],
70
- [MODULES.permission, 'contains_index', 5, [Data_Type.TYPE_STATIC_address, Data_Type.TYPE_STATIC_u64], Data_Type.TYPE_STATIC_bool],
71
- [MODULES.permission, 'contains_guard', 6, [Data_Type.TYPE_STATIC_address, Data_Type.TYPE_STATIC_u64], Data_Type.TYPE_STATIC_bool],
72
- [MODULES.repository, 'permission', 1, [], Data_Type.TYPE_STATIC_address],
73
- [MODULES.repository, 'policy_contains', 2, [Data_Type.TYPE_STATIC_vec_u8], Data_Type.TYPE_STATIC_bool],
74
- [MODULES.repository, 'policy_has_permission_index', 3, [Data_Type.TYPE_STATIC_vec_u8], Data_Type.TYPE_STATIC_bool],
75
- [MODULES.repository, 'policy_permission_index', 4, [Data_Type.TYPE_STATIC_vec_u8], Data_Type.TYPE_STATIC_u64],
76
- [MODULES.repository, 'policy_value_type', 5, [Data_Type.TYPE_STATIC_vec_u8], Data_Type.TYPE_STATIC_u8],
77
- [MODULES.repository, 'contains_id', 6, [Data_Type.TYPE_STATIC_address], Data_Type.TYPE_STATIC_bool],
78
- [MODULES.repository, 'contains_value', 7, [Data_Type.TYPE_STATIC_address, Data_Type.TYPE_STATIC_vec_u8], Data_Type.TYPE_STATIC_bool],
79
- [MODULES.repository, 'value_without_type', 8, [Data_Type.TYPE_STATIC_address, Data_Type.TYPE_STATIC_vec_u8], Data_Type.TYPE_STATIC_vec_u8],
80
- [MODULES.repository, 'value', 9, [Data_Type.TYPE_STATIC_address, Data_Type.TYPE_STATIC_vec_u8], Data_Type.TYPE_STATIC_vec_u8],
81
- [MODULES.repository, 'type', 10, [], Data_Type.TYPE_STATIC_u8],
82
- [MODULES.repository, 'policy_mode', 11, [], Data_Type.TYPE_STATIC_u8],
71
+ export const Sense_Cmd:any = [ [MODULES.permission, 'creator', 1, [], ValueType.TYPE_STATIC_address],
72
+ [MODULES.permission, 'is_admin', 2, [ValueType.TYPE_STATIC_address], ValueType.TYPE_STATIC_bool],
73
+ [MODULES.permission, 'has_rights', 3, [ValueType.TYPE_STATIC_address, ValueType.TYPE_STATIC_u64], ValueType.TYPE_STATIC_bool],
74
+ [MODULES.permission, 'contains_address', 4, [ValueType.TYPE_STATIC_address], ValueType.TYPE_STATIC_bool],
75
+ [MODULES.permission, 'contains_index', 5, [ValueType.TYPE_STATIC_address, ValueType.TYPE_STATIC_u64], ValueType.TYPE_STATIC_bool],
76
+ [MODULES.permission, 'contains_guard', 6, [ValueType.TYPE_STATIC_address, ValueType.TYPE_STATIC_u64], ValueType.TYPE_STATIC_bool],
77
+ [MODULES.repository, 'permission', 1, [], ValueType.TYPE_STATIC_address],
78
+ [MODULES.repository, 'policy_contains', 2, [ValueType.TYPE_STATIC_vec_u8], ValueType.TYPE_STATIC_bool],
79
+ [MODULES.repository, 'policy_has_permission_index', 3, [ValueType.TYPE_STATIC_vec_u8], ValueType.TYPE_STATIC_bool],
80
+ [MODULES.repository, 'policy_permission_index', 4, [ValueType.TYPE_STATIC_vec_u8], ValueType.TYPE_STATIC_u64],
81
+ [MODULES.repository, 'policy_value_type', 5, [ValueType.TYPE_STATIC_vec_u8], ValueType.TYPE_STATIC_u8],
82
+ [MODULES.repository, 'contains_id', 6, [ValueType.TYPE_STATIC_address], ValueType.TYPE_STATIC_bool],
83
+ [MODULES.repository, 'contains_value', 7, [ValueType.TYPE_STATIC_address, ValueType.TYPE_STATIC_vec_u8], ValueType.TYPE_STATIC_bool],
84
+ [MODULES.repository, 'value_without_type', 8, [ValueType.TYPE_STATIC_address, ValueType.TYPE_STATIC_vec_u8], ValueType.TYPE_STATIC_vec_u8],
85
+ [MODULES.repository, 'value', 9, [ValueType.TYPE_STATIC_address, ValueType.TYPE_STATIC_vec_u8], ValueType.TYPE_STATIC_vec_u8],
86
+ [MODULES.repository, 'type', 10, [], ValueType.TYPE_STATIC_u8],
87
+ [MODULES.repository, 'policy_mode', 11, [], ValueType.TYPE_STATIC_u8],
83
88
  ]
84
89
 
85
90
  export class SenseMaker {
@@ -88,46 +93,46 @@ export class SenseMaker {
88
93
 
89
94
  constructor() { }
90
95
  // serialize const & data
91
- add_param(type:Data_Type, param?:any) : boolean {
96
+ add_param(type:ValueType | ContextType, param?:any) : boolean {
92
97
  const bcs = new BCS(getSuiMoveConfig());
93
98
  switch(type) {
94
- case Data_Type.TYPE_STATIC_address:
99
+ case ValueType.TYPE_STATIC_address:
95
100
  this.data.push(bcs.ser(BCS.U8, type).toBytes());
96
101
  this.data.push(bcs.ser(BCS.ADDRESS, param).toBytes());
97
102
  this.type_validator.push(type);
98
103
  break;
99
- case Data_Type.TYPE_STATIC_bool:
104
+ case ValueType.TYPE_STATIC_bool:
100
105
  this.data.push(bcs.ser(BCS.U8, type).toBytes());
101
106
  this.data.push(bcs.ser(BCS.BOOL, param).toBytes());
102
107
  this.type_validator.push(type);
103
108
  break;
104
- case Data_Type.TYPE_STATIC_u8:
109
+ case ValueType.TYPE_STATIC_u8:
105
110
  this.data.push(bcs.ser(BCS.U8, type).toBytes());
106
111
  this.data.push(bcs.ser(BCS.U8, param).toBytes());
107
112
  this.type_validator.push(type);
108
113
  break;
109
- case Data_Type.TYPE_STATIC_u64:
114
+ case ValueType.TYPE_STATIC_u64:
110
115
  this.data.push(bcs.ser(BCS.U8, type).toBytes());
111
116
  this.data.push(bcs.ser(BCS.U64, param).toBytes());
112
117
  this.type_validator.push(type);
113
118
  break;
114
- case Data_Type.TYPE_STATIC_vec_u8:
119
+ case ValueType.TYPE_STATIC_vec_u8:
115
120
  this.data.push(bcs.ser(BCS.U8, type).toBytes());
116
121
  this.data.push(bcs.ser("vector<u8>", param).toBytes());
117
122
  this.type_validator.push(type);
118
123
  // this.data[this.data.length-1].forEach((item : number) => console.log(item))
119
124
  break;
120
- case Data_Type.TYPE_CONTEXT_SIGNER:
125
+ case ContextType.TYPE_CONTEXT_SIGNER:
121
126
  this.data.push(bcs.ser(BCS.U8, type).toBytes());
122
- this.type_validator.push(Data_Type.TYPE_STATIC_address);
127
+ this.type_validator.push(ValueType.TYPE_STATIC_address);
123
128
  break;
124
- case Data_Type.TYPE_CONTEXT_CURRENT_CLOCK:
129
+ case ContextType.TYPE_CONTEXT_CURRENT_CLOCK:
125
130
  this.data.push(bcs.ser(BCS.U8, type).toBytes());
126
- this.type_validator.push(Data_Type.TYPE_STATIC_u64);
131
+ this.type_validator.push(ValueType.TYPE_STATIC_u64);
127
132
  break;
128
- case Data_Type.TYPE_CONTEXT_CURRENT_PROGRESS:
133
+ case ContextType.TYPE_CONTEXT_CURRENT_PROGRESS:
129
134
  this.data.push(bcs.ser(BCS.U8, type).toBytes());
130
- this.type_validator.push(Data_Type.TYPE_STATIC_address);
135
+ this.type_validator.push(ValueType.TYPE_STATIC_address);
131
136
  break;
132
137
  default:
133
138
  return false;
@@ -148,7 +153,7 @@ export class SenseMaker {
148
153
  }
149
154
 
150
155
  const bcs = new BCS(getSuiMoveConfig());
151
- this.data.push(bcs.ser(BCS.U8, Data_Type.TYPE_DYNAMIC_QUERY).toBytes()); // TYPE
156
+ this.data.push(bcs.ser(BCS.U8, OperatorType.TYPE_DYNAMIC_QUERY).toBytes()); // TYPE
152
157
  this.data.push(bcs.ser(BCS.ADDRESS, object_address).toBytes()); // object address
153
158
  this.data.push(bcs.ser(BCS.U8, Sense_Cmd[sense_index][2]).toBytes()); // cmd
154
159
 
@@ -157,19 +162,19 @@ export class SenseMaker {
157
162
  // console.log(this.type_validator)
158
163
  return true;
159
164
  }
160
- add_logic(type:Data_Type) : boolean {
165
+ add_logic(type:OperatorType) : boolean {
161
166
  switch (type) {
162
- case Data_Type.TYPE_LOGIC_OPERATOR_U128_GREATER:
163
- case Data_Type.TYPE_LOGIC_OPERATOR_U128_GREATER_EQUAL:
164
- case Data_Type.TYPE_LOGIC_OPERATOR_U128_LESSER:
165
- case Data_Type.TYPE_LOGIC_OPERATOR_U128_LESSER_EQUAL:
166
- case Data_Type.TYPE_LOGIC_OPERATOR_U128_EQUAL:
167
+ case OperatorType.TYPE_LOGIC_OPERATOR_U128_GREATER:
168
+ case OperatorType.TYPE_LOGIC_OPERATOR_U128_GREATER_EQUAL:
169
+ case OperatorType.TYPE_LOGIC_OPERATOR_U128_LESSER:
170
+ case OperatorType.TYPE_LOGIC_OPERATOR_U128_LESSER_EQUAL:
171
+ case OperatorType.TYPE_LOGIC_OPERATOR_U128_EQUAL:
167
172
  if (this.type_validator.length < 2) { return false; }
168
173
  if (!match_u128(this.type_validator[this.type_validator.length - 1])) { return false; }
169
174
  if (!match_u128(this.type_validator[this.type_validator.length - 2])) { return false; }
170
175
  break;
171
- case Data_Type.TYPE_LOGIC_OPERATOR_EQUAL:
172
- case Data_Type.TYPE_LOGIC_OPERATOR_HAS_SUBSTRING:
176
+ case OperatorType.TYPE_LOGIC_OPERATOR_EQUAL:
177
+ case OperatorType.TYPE_LOGIC_OPERATOR_HAS_SUBSTRING:
173
178
  if (this.type_validator.length < 2) { return false; }
174
179
  break;
175
180
  default:
@@ -178,15 +183,15 @@ export class SenseMaker {
178
183
  const bcs = new BCS(getSuiMoveConfig());
179
184
  this.data.push(bcs.ser(BCS.U8, type).toBytes()); // TYPE
180
185
  this.type_validator.splice(this.type_validator.length - 2); // delete type stack
181
- this.type_validator.push(Data_Type.TYPE_STATIC_bool); // add bool to type stack
186
+ this.type_validator.push(ValueType.TYPE_STATIC_bool); // add bool to type stack
182
187
  return true;
183
188
  }
184
189
 
185
- make(bNotAfterSense:boolean, binder:Guard_Sense_Binder) : undefined | Guard_Sense {
190
+ make(bNotAfterSense:boolean, binder:Guard_Sense_Binder) : boolean | Guard_Sense {
186
191
  //console.log(this.type_validator);
187
192
  //this.data.forEach((value:Uint8Array) => console.log(value));
188
- if (this.type_validator.length != 1 || this.type_validator[0] != Data_Type.TYPE_STATIC_bool) {
189
- return undefined;
193
+ if (this.type_validator.length != 1 || this.type_validator[0] != ValueType.TYPE_STATIC_bool) {
194
+ return false;
190
195
  } // ERROR
191
196
 
192
197
  let input = concatenate(Uint8Array, ...this.data) as Uint8Array;
@@ -195,61 +200,62 @@ export class SenseMaker {
195
200
  }
196
201
  }
197
202
 
198
- function match_u128(type:Data_Type) : boolean {
199
- if (type == Data_Type.TYPE_STATIC_option_u8 ||
200
- type == Data_Type.TYPE_STATIC_option_u64 ||
201
- type == Data_Type.TYPE_STATIC_option_u128 ) {
203
+ function match_u128(type:number) : boolean {
204
+ if (type == ValueType.TYPE_STATIC_option_u8 ||
205
+ type == ValueType.TYPE_STATIC_option_u64 ||
206
+ type == ValueType.TYPE_STATIC_option_u128 ) {
202
207
  return true;
203
208
  }
204
209
  return false;
205
210
  }
206
211
 
207
212
  // parse guard senses input bytes of a guard, return [objectids] for 'query_cmd'
208
- export function parse_sense_bsc(chain_sense_bsc:Uint8Array) : undefined | string[] {
213
+ export function parse_sense_bsc(chain_sense_bsc:Uint8Array) : boolean | string[] {
209
214
  // console.log(data);
210
215
  var array = [].slice.call(chain_sense_bsc.reverse());
211
216
  const bcs = new BCS(getSuiMoveConfig());
212
217
  var result = [];
218
+
213
219
  while (array.length > 0) {
214
220
  var type : unknown = array.shift() ;
215
221
  // console.log(type);
216
- switch (type as Data_Type) {
217
- case Data_Type.TYPE_CONTEXT_SIGNER:
218
- case Data_Type.TYPE_CONTEXT_CURRENT_CLOCK:
219
- case Data_Type.TYPE_CONTEXT_CURRENT_PROGRESS:
220
- case Data_Type.TYPE_LOGIC_OPERATOR_U128_GREATER:
221
- case Data_Type.TYPE_LOGIC_OPERATOR_U128_GREATER_EQUAL:
222
- case Data_Type.TYPE_LOGIC_OPERATOR_U128_LESSER:
223
- case Data_Type.TYPE_LOGIC_OPERATOR_U128_LESSER_EQUAL:
224
- case Data_Type.TYPE_LOGIC_OPERATOR_U128_EQUAL:
225
- case Data_Type.TYPE_LOGIC_OPERATOR_EQUAL:
226
- case Data_Type.TYPE_LOGIC_OPERATOR_HAS_SUBSTRING:
222
+ switch (type as Data_Type) {
223
+ case ContextType.TYPE_CONTEXT_SIGNER:
224
+ case ContextType.TYPE_CONTEXT_CURRENT_CLOCK:
225
+ case ContextType.TYPE_CONTEXT_CURRENT_PROGRESS:
226
+ case OperatorType.TYPE_LOGIC_OPERATOR_U128_GREATER:
227
+ case OperatorType.TYPE_LOGIC_OPERATOR_U128_GREATER_EQUAL:
228
+ case OperatorType.TYPE_LOGIC_OPERATOR_U128_LESSER:
229
+ case OperatorType.TYPE_LOGIC_OPERATOR_U128_LESSER_EQUAL:
230
+ case OperatorType.TYPE_LOGIC_OPERATOR_U128_EQUAL:
231
+ case OperatorType.TYPE_LOGIC_OPERATOR_EQUAL:
232
+ case OperatorType.TYPE_LOGIC_OPERATOR_HAS_SUBSTRING:
227
233
  break;
228
- case Data_Type.TYPE_STATIC_address:
234
+ case ValueType.TYPE_STATIC_address:
229
235
  //console.log('0x' + bcs.de(BCS.ADDRESS, Uint8Array.from(array)).toString());
230
236
  array.splice(0, 32);
231
237
  break;
232
- case Data_Type.TYPE_STATIC_bool:
233
- case Data_Type.TYPE_STATIC_u8:
238
+ case ValueType.TYPE_STATIC_bool:
239
+ case ValueType.TYPE_STATIC_u8:
234
240
  array.splice(0, 1);
235
241
  break;
236
- case Data_Type.TYPE_STATIC_u64:
242
+ case ValueType.TYPE_STATIC_u64:
237
243
  array.splice(0, 8);
238
244
  break;
239
- case Data_Type.TYPE_STATIC_u128:
245
+ case ValueType.TYPE_STATIC_u128:
240
246
  array.splice(0, 16);
241
247
  break;
242
- case Data_Type.TYPE_STATIC_vec_u8:
248
+ case ValueType.TYPE_STATIC_vec_u8:
243
249
  let {value, length} = ulebDecode(Uint8Array.from(array));
244
250
  array.splice(0, value+length);
245
251
  break;
246
- case Data_Type.TYPE_DYNAMIC_QUERY:
252
+ case OperatorType.TYPE_DYNAMIC_QUERY:
247
253
  result.push('0x' + bcs.de(BCS.ADDRESS, Uint8Array.from(array)).toString());
248
254
  array.splice(0, 33); // address + cmd
249
255
  break;
250
256
  default:
251
257
  // console.log('parse_sense_bsc:undefined');
252
- return undefined; // error
258
+ return false; // error
253
259
  }
254
260
  }
255
261
  return result;