wowok 1.3.10 → 1.3.13

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wowok",
3
- "version": "1.3.10",
3
+ "version": "1.3.13",
4
4
  "description": "Create, collaborate, and transact on your own terms with the AI-driven web3 collaboration protocol.",
5
5
  "main": "./src/index.ts",
6
6
  "types": "./src/index.ts",
package/src/guard.ts CHANGED
@@ -6,9 +6,9 @@ import { IsValidDesription, Bcs, IsValidInt, IsValidAddress, FirstLetterUppercas
6
6
  import { ERROR, Errors } from './exception';
7
7
  import { Transaction as TransactionBlock } from '@mysten/sui/transactions';
8
8
 
9
- export type GuardConstant = Map<number, Guard_Vriable>;
9
+ export type GuardConstant = Map<number, Guard_Variable>;
10
10
 
11
- export interface Guard_Vriable {
11
+ export interface Guard_Variable {
12
12
  type: ConstantType ,
13
13
  value?: Uint8Array,
14
14
  witness?: Uint8Array,
@@ -22,7 +22,7 @@ export interface Guard_Options {
22
22
  }
23
23
 
24
24
  export class Guard {
25
- static MAX_INPUT_LENGTH = 2048;
25
+ static MAX_INPUT_LENGTH = 10240;
26
26
  static launch(txb:TransactionBlock, description:string, maker:GuardMaker) : GuardAddress {
27
27
  if (!maker.IsReady()) {
28
28
  ERROR(Errors.InvalidParam, 'launch maker');
@@ -98,109 +98,111 @@ export class Guard {
98
98
 
99
99
  static QUERIES:any[] = [
100
100
  // module, 'name', 'id', [input], output
101
- [MODULES.permission, 'Builder', 1, [], ValueType.TYPE_ADDRESS],
102
- [MODULES.permission, 'Has Admin', 2, [ValueType.TYPE_ADDRESS], ValueType.TYPE_BOOL],
103
- [MODULES.permission, 'Has Rights', 3, [ValueType.TYPE_ADDRESS, ValueType.TYPE_U64], ValueType.TYPE_BOOL],
104
- [MODULES.permission, 'Contains Address', 4, [ValueType.TYPE_ADDRESS], ValueType.TYPE_BOOL],
105
- [MODULES.permission, 'Contains Index of Address', 5, [ValueType.TYPE_ADDRESS, ValueType.TYPE_U64], ValueType.TYPE_BOOL],
106
- [MODULES.permission, 'Contains Guard of Address', 6, [ValueType.TYPE_ADDRESS, ValueType.TYPE_U64], ValueType.TYPE_BOOL],
107
- [MODULES.permission, 'Guard of Address', 7, [ValueType.TYPE_ADDRESS, ValueType.TYPE_U64], ValueType.TYPE_ADDRESS],
108
- [MODULES.permission, 'Entity Count', 8, [], ValueType.TYPE_U64],
109
- [MODULES.permission, 'Admin Count', 9, [], ValueType.TYPE_U64],
101
+ [MODULES.permission, 'Owner', 1, [], ValueType.TYPE_ADDRESS, "Owner's address."],
102
+ [MODULES.permission, 'Is Admin', 2, [ValueType.TYPE_ADDRESS], ValueType.TYPE_BOOL, 'Is a certain address an administrator?', 'Input:address'],
103
+ [MODULES.permission, 'Has Rights', 3, [ValueType.TYPE_ADDRESS, ValueType.TYPE_U64], ValueType.TYPE_BOOL, 'Does an address have a certain permission(Admin always have permissions)?', 'Input 1:address; Input 2:permission index'],
104
+ [MODULES.permission, 'Contains Address', 4, [ValueType.TYPE_ADDRESS], ValueType.TYPE_BOOL, 'Whether an address is included in the personnel permission table?', 'Input:address'],
105
+ [MODULES.permission, 'Contains Permission', 5, [ValueType.TYPE_ADDRESS, ValueType.TYPE_U64], ValueType.TYPE_BOOL, 'Whether a certain permission for a certain address is defined in the personnel permission table?', 'Input 1:address; Input 2:permission index'],
106
+ [MODULES.permission, 'Contains Permission Guard', 6, [ValueType.TYPE_ADDRESS, ValueType.TYPE_U64], ValueType.TYPE_BOOL, 'Whether a permission guard for a certain address is defined in the personnel permission table?', 'Input 1:address; Input 2:permission index'],
107
+ [MODULES.permission, 'Permission Guard', 7, [ValueType.TYPE_ADDRESS, ValueType.TYPE_U64], ValueType.TYPE_ADDRESS, 'Permission guard for a certain address.', 'Input 1:address; Input 2:permission index'],
108
+ [MODULES.permission, 'Number of Entities', 8, [], ValueType.TYPE_U64, 'Number of entities in the personnel permission table.'],
109
+ [MODULES.permission, 'Number of Admin', 9, [], ValueType.TYPE_U64, 'Number of administrators.'],
110
110
 
111
- [MODULES.repository, 'Permission', 11, [], ValueType.TYPE_ADDRESS],
112
- [MODULES.repository, 'Contains Policy', 12, [ValueType.TYPE_VEC_U8], ValueType.TYPE_BOOL],
113
- [MODULES.repository, 'Has Permission of Policy', 13, [ValueType.TYPE_VEC_U8], ValueType.TYPE_BOOL],
114
- [MODULES.repository, 'Permission of Policy', 14, [ValueType.TYPE_VEC_U8], ValueType.TYPE_U64],
115
- [MODULES.repository, 'Value Type of Policy', 15, [ValueType.TYPE_VEC_U8], ValueType.TYPE_U8],
116
- [MODULES.repository, 'Contains Id', 16, [ValueType.TYPE_ADDRESS], ValueType.TYPE_BOOL],
117
- [MODULES.repository, 'Contains Value', 17, [ValueType.TYPE_ADDRESS, ValueType.TYPE_VEC_U8], ValueType.TYPE_BOOL],
118
- [MODULES.repository, 'Value without Type', 18, [ValueType.TYPE_ADDRESS, ValueType.TYPE_VEC_U8], ValueType.TYPE_VEC_U8],
119
- [MODULES.repository, 'Value', 19, [ValueType.TYPE_ADDRESS, ValueType.TYPE_VEC_U8], ValueType.TYPE_VEC_U8],
120
- [MODULES.repository, 'Type', 20, [], ValueType.TYPE_U8],
121
- [MODULES.repository, 'Policy Mode', 21, [], ValueType.TYPE_U8],
122
- [MODULES.repository, 'Reference Count', 22, [], ValueType.TYPE_U64],
123
- [MODULES.repository, 'Has Reference', 23, [ValueType.TYPE_ADDRESS], ValueType.TYPE_BOOL],
124
-
125
- [MODULES.machine, 'Permission', 31, [], ValueType.TYPE_ADDRESS],
126
- [MODULES.machine, 'Paused', 32, [], ValueType.TYPE_BOOL],
127
- [MODULES.machine, 'Published', 33, [], ValueType.TYPE_BOOL],
128
- [MODULES.machine, 'Is Consensus Repository', 34, [ValueType.TYPE_ADDRESS], ValueType.TYPE_BOOL],
129
- [MODULES.machine, 'Has Endpoint', 35, [], ValueType.TYPE_BOOL],
130
- [MODULES.machine, 'Endpoint', 36, [], ValueType.TYPE_VEC_U8],
111
+ [MODULES.repository, 'Permission', 11, [], ValueType.TYPE_ADDRESS, 'Permission object address.'],
112
+ [MODULES.repository, 'Contains Policy', 12, [ValueType.TYPE_STRING], ValueType.TYPE_BOOL, 'Is a consensus policy included?', 'Input:the filed name'],
113
+ [MODULES.repository, 'Is Permission set of Policy', 13, [ValueType.TYPE_STRING], ValueType.TYPE_BOOL, 'Does a certain consensus policy set data operation permissions?', 'Input:the policy name'],
114
+ [MODULES.repository, 'Permission of Policy', 14, [ValueType.TYPE_STRING], ValueType.TYPE_U64, 'The permission index of a certain consensus policy in the Permission object.', 'Input:the policy name'],
115
+ [MODULES.repository, 'Value Type of Policy', 15, [ValueType.TYPE_STRING], ValueType.TYPE_U8, 'Data types defined by consensus policy.', 'Input:the policy name'],
116
+ [MODULES.repository, 'Contains Data for An Address', 16, [ValueType.TYPE_ADDRESS], ValueType.TYPE_BOOL, 'Whether data exists at a certain address?', 'Input:address'],
117
+ [MODULES.repository, 'Contains Data', 17, [ValueType.TYPE_ADDRESS, ValueType.TYPE_STRING], ValueType.TYPE_BOOL, 'Does it contain data for a certain field of an address?', 'Input 1:address, Input 2:the field name'],
118
+ [MODULES.repository, 'Data without Type', 18, [ValueType.TYPE_ADDRESS, ValueType.TYPE_STRING], ValueType.TYPE_VEC_U8, 'Data for a field at an address and does not contain data type information.', 'Input 1:address, Input 2:the field name'],
119
+ [MODULES.repository, 'Value', 19, [ValueType.TYPE_ADDRESS, ValueType.TYPE_STRING], ValueType.TYPE_VEC_U8, 'Data for a field at an address, and the first byte contains data type information.', 'Input 1:address, Input 2:the field name'],
120
+ [MODULES.repository, 'Type', 20, [], ValueType.TYPE_U8, 'The repository Type. 0: Normal; 1: Wowok greenee.'],
121
+ [MODULES.repository, 'Policy Mode', 21, [], ValueType.TYPE_U8, 'Policy Mode. 0: Free mode; 1: Strict mode.'],
122
+ [MODULES.repository, 'Reference Count', 22, [], ValueType.TYPE_U64, 'The number of times it is referenced by other objects.'],
123
+ [MODULES.repository, 'Is Referenced by An Object', 23, [ValueType.TYPE_ADDRESS], ValueType.TYPE_BOOL, 'Is it referenced by an object?', 'Input:address'],
124
+ // , means that data fields and data outside the consensus policy definition are allowed to be written
125
+ // , means that only data fields and data defined by the consensus policy are allowed to be written.
126
+ [MODULES.machine, 'Permission', 31, [], ValueType.TYPE_ADDRESS, 'Permission object address.'],
127
+ [MODULES.machine, 'Paused', 32, [], ValueType.TYPE_BOOL, 'Pause the creation of new Progress?'],
128
+ [MODULES.machine, 'Published', 33, [], ValueType.TYPE_BOOL, 'Is it allowed to create Progress?'],
129
+ [MODULES.machine, 'Is Consensus Repository', 34, [ValueType.TYPE_ADDRESS], ValueType.TYPE_BOOL, 'Whether an address is a consensus repository?', 'Input:adddress'],
130
+ [MODULES.machine, 'Has Endpoint', 35, [], ValueType.TYPE_BOOL, 'Is the endpoint set?'],
131
+ [MODULES.machine, 'Endpoint', 36, [], ValueType.TYPE_STRING, 'Endpoint url/ipfs.'],
131
132
 
132
- [MODULES.progress, 'Machine', 51, [], ValueType.TYPE_ADDRESS],
133
- [MODULES.progress, 'Current Node', 52, [], ValueType.TYPE_VEC_U8],
134
- [MODULES.progress, 'Has Parent', 53, [], ValueType.TYPE_BOOL],
135
- [MODULES.progress, 'Parent', 54, [], ValueType.TYPE_ADDRESS],
136
- [MODULES.progress, 'Has Task', 55, [], ValueType.TYPE_BOOL],
137
- [MODULES.progress, 'Task', 56, [], ValueType.TYPE_ADDRESS],
138
- [MODULES.progress, 'Has Operator', 57, [ValueType.TYPE_VEC_U8], ValueType.TYPE_BOOL],
139
- [MODULES.progress, 'Is Operator for Address', 58, [ValueType.TYPE_VEC_U8, ValueType.TYPE_ADDRESS], ValueType.TYPE_BOOL],
140
- [MODULES.progress, 'Has Context Repository', 59, [], ValueType.TYPE_BOOL],
141
- [MODULES.progress, 'Context Repository', 60, [], ValueType.TYPE_ADDRESS],
133
+ [MODULES.progress, 'Machine', 51, [], ValueType.TYPE_ADDRESS, 'The Machine object that created this Progress.'],
134
+ [MODULES.progress, 'Current Node', 52, [], ValueType.TYPE_STRING, 'The name of the currently running node.'],
135
+ [MODULES.progress, 'Has Parent', 53, [], ValueType.TYPE_BOOL, 'Is the parent Progress defined?'],
136
+ [MODULES.progress, 'Parent', 54, [], ValueType.TYPE_ADDRESS, 'The parent Progress, that contains some child Progress.'],
137
+ [MODULES.progress, 'Has Task', 55, [], ValueType.TYPE_BOOL, 'Does it contain clear task(eg. an Order)?'],
138
+ [MODULES.progress, 'Task', 56, [], ValueType.TYPE_ADDRESS, 'Task object address.'],
139
+ [MODULES.progress, 'Has Unique Permission', 57, [ValueType.TYPE_STRING], ValueType.TYPE_BOOL, 'Does Progress define a unique operation permission?', 'Input:opertor name'],
140
+ [MODULES.progress, 'Is Unique Permission Operator', 58, [ValueType.TYPE_STRING, ValueType.TYPE_ADDRESS], ValueType.TYPE_BOOL, 'Is an address an operator with unique permissions?', 'Input 1:operator name; Input 2:address'],
141
+ [MODULES.progress, 'Has Context Repository', 59, [], ValueType.TYPE_BOOL, 'Whether the repository reference for Progress is set?'],
142
+ [MODULES.progress, 'Context Repository', 60, [], ValueType.TYPE_ADDRESS, 'Repository reference for Progress.'],
143
+ [MODULES.progress, 'Last Session Time', 61, [], ValueType.TYPE_U64, 'Time when the previous session was completed.'],
144
+ [MODULES.progress, 'Session Time', 62, [ValueType.TYPE_STRING], ValueType.TYPE_U64, 'Time a node completes its session.', 'Input:the node name'],
145
+
146
+ [MODULES.demand, 'Permission', 71, [], ValueType.TYPE_ADDRESS, 'Permission object address.'],
147
+ [MODULES.demand, 'Has Deadline', 72, [], ValueType.TYPE_BOOL, 'Whether to set the expiration time of presenting?'],
148
+ [MODULES.demand, 'Deadline', 73, [], ValueType.TYPE_U64, 'The expiration time of presenting.'],
149
+ [MODULES.demand, 'Bounty Count', 74, [], ValueType.TYPE_U64, 'Number of Bounties.'],
150
+ [MODULES.demand, 'Has Guard', 75, [], ValueType.TYPE_BOOL, 'Whether the present guard is set?'],
151
+ [MODULES.demand, 'Guard', 76, [], ValueType.TYPE_ADDRESS, 'The present guard address.'],
152
+ [MODULES.demand, 'Has Service Picked', 77, [], ValueType.TYPE_BOOL, 'Whether a service has been picked and bounties given?'],
153
+ [MODULES.demand, 'Service Picked', 78, [], ValueType.TYPE_ADDRESS, 'Service address that has been picked.'],
154
+ [MODULES.demand, 'Presenter Count', 79, [], ValueType.TYPE_U64, 'Number of presenters.'],
155
+ [MODULES.demand, 'Has Presenter', 80, [ValueType.TYPE_ADDRESS], ValueType.TYPE_BOOL, 'Is a certain address a presenter?', 'Input:address'],
156
+ [MODULES.demand, 'Who Got Bounty', 81, [ValueType.TYPE_ADDRESS], ValueType.TYPE_ADDRESS, 'The address that bounties given.', 'Input:address'],
142
157
 
143
- [MODULES.demand, 'Permission', 71, [], ValueType.TYPE_ADDRESS],
144
- [MODULES.demand, 'Has Deadline', 72, [], ValueType.TYPE_BOOL],
145
- [MODULES.demand, 'Deadline', 73, [], ValueType.TYPE_U64],
146
- [MODULES.demand, 'Bounty Count', 74, [], ValueType.TYPE_U64],
147
- [MODULES.demand, 'Has Guard', 75, [], ValueType.TYPE_BOOL],
148
- [MODULES.demand, 'Guard', 76, [], ValueType.TYPE_ADDRESS],
149
- [MODULES.demand, 'Has Service Picked', 77, [], ValueType.TYPE_BOOL],
150
- [MODULES.demand, 'Service Picked', 78, [], ValueType.TYPE_ADDRESS],
151
- [MODULES.demand, 'Presenter Count', 79, [], ValueType.TYPE_U64],
152
- [MODULES.demand, 'Is Presenter', 80, [ValueType.TYPE_ADDRESS], ValueType.TYPE_BOOL],
153
- [MODULES.demand, 'Who Got Bounty', 81, [ValueType.TYPE_ADDRESS], ValueType.TYPE_ADDRESS],
158
+ [MODULES.order, 'Amount', 91, [], ValueType.TYPE_U64, 'Order amount.'],
159
+ [MODULES.order, 'Payer', 92, [], ValueType.TYPE_ADDRESS, 'Order payer.'],
160
+ [MODULES.order, 'Service', 93, [], ValueType.TYPE_ADDRESS, 'Service for creating orders.'],
161
+ [MODULES.order, 'Has Progress', 94, [], ValueType.TYPE_BOOL, 'Is there a Progress for executing the order process?'],
162
+ [MODULES.order, 'Progress', 95, [], ValueType.TYPE_ADDRESS, 'Progress address for executing the order process.'],
163
+ [MODULES.order, 'Required Info Counts', 96, [], ValueType.TYPE_U64, 'How much customer information is required for this order?'],
164
+ [MODULES.order, 'Discount Used', 97, [], ValueType.TYPE_BOOL, 'Discount coupon used for this order?'],
165
+ [MODULES.order, 'Discount', 98, [], ValueType.TYPE_ADDRESS, 'Discount address that already used.'],
166
+ [MODULES.order, 'Balance', 99, [], ValueType.TYPE_U64, 'The amount currently in the order.'],
167
+ [MODULES.order, 'Refunded', 100, [], ValueType.TYPE_BOOL, 'Whether a refund has occurred?'],
168
+ [MODULES.order, 'Withdrawed', 101, [], ValueType.TYPE_BOOL, 'Whether a service provider withdrawal has occurred?'],
154
169
 
155
- [MODULES.order, 'Amount', 91, [], ValueType.TYPE_U64],
156
- [MODULES.order, 'Payer', 92, [], ValueType.TYPE_ADDRESS],
157
- [MODULES.order, 'Service', 93, [], ValueType.TYPE_ADDRESS],
158
- [MODULES.order, 'Has Progress', 94, [], ValueType.TYPE_BOOL],
159
- [MODULES.order, 'Progress', 95, [], ValueType.TYPE_ADDRESS],
160
- [MODULES.order, 'Required Info Counts', 96, [], ValueType.TYPE_U64],
161
- [MODULES.order, 'Discount Used', 97, [], ValueType.TYPE_BOOL],
162
- [MODULES.order, 'Discount', 98, [], ValueType.TYPE_ADDRESS],
163
- [MODULES.order, 'Balance', 99, [], ValueType.TYPE_U64],
164
- [MODULES.order, 'Be Refunded', 100, [], ValueType.TYPE_BOOL],
165
- [MODULES.order, 'Be Withdrawed', 101, [], ValueType.TYPE_BOOL],
170
+ [MODULES.service, 'Permission', 111, [], ValueType.TYPE_ADDRESS, 'Permission object address.'],
171
+ [MODULES.service, 'Payee', 112, [], ValueType.TYPE_ADDRESS, 'Payee address, that all order withdrawals will be collected to this address.'],
172
+ [MODULES.service, 'Has Buying Guard', 113, [], ValueType.TYPE_BOOL, 'Is the guard condition of buying set?'],
173
+ [MODULES.service, 'Buying Guard', 114, [], ValueType.TYPE_ADDRESS, 'Buying guard, that Purchase only if you meet the conditions of the guard.'],
174
+ [MODULES.service, 'Contains Repository', 115, [ValueType.TYPE_ADDRESS], ValueType.TYPE_BOOL, "Is a certain repository one of the service's consensus repositories?", 'Input:address'],
175
+ [MODULES.service, 'Has Withdrawing Guard', 116, [ValueType.TYPE_ADDRESS], ValueType.TYPE_BOOL, 'Whether a certain guard is set when withdrawing money?', 'Input:address'],
176
+ [MODULES.service, 'Withdrawing Guard Percent', 117, [ValueType.TYPE_ADDRESS], ValueType.TYPE_U64, 'The percentage of withdrawals allowed by a certain withdrawal guard.', 'Input:address'],
177
+ [MODULES.service, 'Has Refunding Guard', 118, [ValueType.TYPE_ADDRESS], ValueType.TYPE_BOOL, 'Whether a certain guard is set when refunding money?', 'Input:address'],
178
+ [MODULES.service, 'Refunding Guard Percent', 119, [ValueType.TYPE_ADDRESS], ValueType.TYPE_U64, 'The percentage of refund allowed by a certain refund guard.', 'Input:address'],
179
+ [MODULES.service, 'Has Sales Item', 120, [ValueType.TYPE_STRING], ValueType.TYPE_BOOL, 'Is there a sales item for the service?', 'Input:the item name'],
180
+ [MODULES.service, 'Sale Item Price', 121, [ValueType.TYPE_STRING], ValueType.TYPE_U64, 'What is the price of a certain sale item?', 'Input:the item name'],
181
+ [MODULES.service, 'Sale Item Inventory', 122, [ValueType.TYPE_STRING], ValueType.TYPE_U64, 'How much inventory is there for a certain sales item?', 'Input:the item name'],
182
+ [MODULES.service, 'Has Machine', 123, [], ValueType.TYPE_BOOL, "Has the machine(progress generator) that serves the order been set up?"],
183
+ [MODULES.service, 'Machine', 124, [], ValueType.TYPE_ADDRESS, 'Machine address, that generate progresses serving the execution process of order.'],
184
+ [MODULES.service, 'Paused', 125, [], ValueType.TYPE_BOOL, 'Pause the creation of new order?'],
185
+ [MODULES.service, 'Published', 126, [], ValueType.TYPE_BOOL, 'Is it allowed to create orders?'],
186
+ [MODULES.service, 'Has Required Info', 127, [], ValueType.TYPE_BOOL, 'Whether the necessary information that needs to be provided by the customer is set?'],
187
+ [MODULES.service, 'Required Info of Service-Pubkey', 128, [], ValueType.TYPE_STRING, 'The public key used to encrypt customer information, and only the service provider can decrypt and view customer information.'],
188
+ [MODULES.service, 'Required Info', 129, [], ValueType.TYPE_VEC_STRING, 'Names of the required information item that needs to be provided by the customer.'],
166
189
 
167
- [MODULES.service, 'Permission', 111, [], ValueType.TYPE_ADDRESS],
168
- [MODULES.service, 'Payee', 112, [], ValueType.TYPE_ADDRESS],
169
- [MODULES.service, 'Has Buy-Guard', 113, [], ValueType.TYPE_BOOL],
170
- [MODULES.service, 'Buy-Guard', 114, [], ValueType.TYPE_ADDRESS],
171
- [MODULES.service, 'Contains Repository', 115, [ValueType.TYPE_ADDRESS], ValueType.TYPE_BOOL],
172
- [MODULES.service, 'Has Withdraw-Guard', 116, [ValueType.TYPE_ADDRESS], ValueType.TYPE_BOOL],
173
- [MODULES.service, 'Withdraw-Guard Percent', 117, [ValueType.TYPE_ADDRESS], ValueType.TYPE_U64],
174
- [MODULES.service, 'Has Refund-Guard', 118, [ValueType.TYPE_ADDRESS], ValueType.TYPE_BOOL],
175
- [MODULES.service, 'Refund-Guard Percent', 119, [ValueType.TYPE_ADDRESS], ValueType.TYPE_U64],
176
- [MODULES.service, 'Has Sale Item', 120, [ValueType.TYPE_VEC_U8], ValueType.TYPE_BOOL],
177
- [MODULES.service, 'Sale Item Price', 121, [ValueType.TYPE_VEC_U8], ValueType.TYPE_U64],
178
- [MODULES.service, 'Sale Item Inventory', 122, [ValueType.TYPE_VEC_U8], ValueType.TYPE_U64],
179
- [MODULES.service, 'Has Machine', 123, [], ValueType.TYPE_BOOL],
180
- [MODULES.service, 'Machine', 124, [], ValueType.TYPE_ADDRESS],
181
- [MODULES.service, 'Paused', 125, [], ValueType.TYPE_BOOL],
182
- [MODULES.service, 'Published', 126, [], ValueType.TYPE_BOOL],
183
- [MODULES.service, 'Has Required Info', 127, [], ValueType.TYPE_BOOL],
184
- [MODULES.service, 'Required Info of Service-Pubkey', 128, [], ValueType.TYPE_VEC_U8],
185
- [MODULES.service, 'Required Info', 129, [], ValueType.TYPE_VEC_VEC_U8],
190
+ [MODULES.reward, 'Permission', 151, [], ValueType.TYPE_ADDRESS, 'Permission object address.'],
191
+ [MODULES.reward, 'Rewards Remaining', 152, [], ValueType.TYPE_U64, 'Number of rewards to be claimed.'],
192
+ [MODULES.reward, 'Reward Count Supplied', 153, [], ValueType.TYPE_U64, 'Total rewards supplied.'],
193
+ [MODULES.reward, 'Guard Count', 154, [], ValueType.TYPE_U64, 'The number of claiming guards.'],
194
+ [MODULES.reward, 'Has Guard', 155, [ValueType.TYPE_ADDRESS], ValueType.TYPE_BOOL, 'Whether a claiming guard is set up?', 'Input:address'],
195
+ [MODULES.reward, 'Guard Portion', 156, [ValueType.TYPE_ADDRESS], ValueType.TYPE_U64, 'The portions of rewards, that can be claimed if a certain guard condition is met.', 'Input:address'],
196
+ [MODULES.reward, 'Deadline', 157, [], ValueType.TYPE_U64, 'The expiration time of claiming.'],
197
+ [MODULES.reward, 'Has Claimed by An Address', 158, [ValueType.TYPE_ADDRESS], ValueType.TYPE_BOOL, 'Whether a certain address has claimed rewards?', 'Input:address'],
198
+ [MODULES.reward, 'Portions Claimed by An Address', 159, [ValueType.TYPE_ADDRESS], ValueType.TYPE_U64, 'The portions of rewards that have been claimed by a certain address.'],
199
+ [MODULES.reward, 'Number of Addresses Claimed', 160, [], ValueType.TYPE_U64, 'Number of addresses that have claimed rewards.'],
200
+ [MODULES.reward, 'Is Sponsor', 161, [ValueType.TYPE_ADDRESS], ValueType.TYPE_BOOL, 'Whether an address is a sponsor of the reward pool?', 'Input:address'],
201
+ [MODULES.reward, 'Portions by A Sponsor', 162, [ValueType.TYPE_ADDRESS], ValueType.TYPE_U64, 'The portions of sponsorship reward pools for a certain address.', 'Input:address'],
202
+ [MODULES.reward, 'Number of Sponsors', 163, [], ValueType.TYPE_U64, 'Number of sponsors in the sponsorship reward pool.'],
203
+ [MODULES.reward, 'Allow Repeated Claims', 164, [], ValueType.TYPE_BOOL, 'Whether to allow repeated claims?'],
186
204
 
187
- [MODULES.reward, 'Permission', 151, [], ValueType.TYPE_ADDRESS],
188
- [MODULES.reward, 'Reward Count Left', 152, [], ValueType.TYPE_U64],
189
- [MODULES.reward, 'Reward Count Supplied', 153, [], ValueType.TYPE_U64],
190
- [MODULES.reward, 'Guard Count', 154, [], ValueType.TYPE_U64],
191
- [MODULES.reward, 'Has Guard', 155, [ValueType.TYPE_ADDRESS], ValueType.TYPE_BOOL],
192
- [MODULES.reward, 'Guard Portion', 156, [ValueType.TYPE_ADDRESS], ValueType.TYPE_U64],
193
- [MODULES.reward, 'Deadline', 157, [], ValueType.TYPE_U64],
194
- [MODULES.reward, 'Has Claimed by Address', 158, [ValueType.TYPE_ADDRESS], ValueType.TYPE_BOOL],
195
- [MODULES.reward, 'Claimed by Address', 159, [ValueType.TYPE_ADDRESS], ValueType.TYPE_U64],
196
- [MODULES.reward, 'Address Count Claimed', 160, [], ValueType.TYPE_U64],
197
- [MODULES.reward, 'Is Sponsor', 161, [ValueType.TYPE_ADDRESS], ValueType.TYPE_BOOL],
198
- [MODULES.reward, 'Portion by Sponsor', 162, [ValueType.TYPE_ADDRESS], ValueType.TYPE_U64],
199
- [MODULES.reward, 'Sponsor Count', 163, [], ValueType.TYPE_U64],
200
- [MODULES.reward, 'Allow Repeat Claim', 164, [], ValueType.TYPE_BOOL],
201
- [MODULES.reward, 'Claimed Portion by Address', 165, [ValueType.TYPE_ADDRESS], ValueType.TYPE_U64],
202
-
203
- [MODULES.vote, 'Permission', 171, [], ValueType.TYPE_ADDRESS],
205
+ /* [MODULES.vote, 'Permission', 171, [], ValueType.TYPE_ADDRESS],
204
206
  [MODULES.vote, 'Options Locked', 172, [], ValueType.TYPE_BOOL],
205
207
  [MODULES.vote, 'Deadline Locked', 173, [], ValueType.TYPE_BOOL],
206
208
  [MODULES.vote, 'Vote-Guard Locked', 174, [], ValueType.TYPE_BOOL],
@@ -212,33 +214,33 @@ export class Guard {
212
214
  [MODULES.vote, 'Vote-Guard', 180, [ValueType.TYPE_ADDRESS], ValueType.TYPE_U64],
213
215
  [MODULES.vote, 'Has Voted by Address', 181, [ValueType.TYPE_ADDRESS], ValueType.TYPE_BOOL],
214
216
  [MODULES.vote, 'Voted Weight by Address', 182, [ValueType.TYPE_ADDRESS], ValueType.TYPE_U64],
215
- [MODULES.vote, 'Has Option', 183, [ValueType.TYPE_VEC_U8], ValueType.TYPE_BOOL],
216
- [MODULES.vote, 'Has Object of Option', 184, [ValueType.TYPE_VEC_U8], ValueType.TYPE_BOOL],
217
- [MODULES.vote, 'Option Object', 185, [ValueType.TYPE_VEC_U8], ValueType.TYPE_ADDRESS],
218
- [MODULES.vote, 'Option Count', 186, [ValueType.TYPE_VEC_U8], ValueType.TYPE_U64],
219
- [MODULES.vote, 'Option Votes', 187, [ValueType.TYPE_VEC_U8], ValueType.TYPE_U64],
217
+ [MODULES.vote, 'Has Option', 183, [ValueType.TYPE_STRING], ValueType.TYPE_BOOL],
218
+ [MODULES.vote, 'Has Object of Option', 184, [ValueType.TYPE_STRING], ValueType.TYPE_BOOL],
219
+ [MODULES.vote, 'Option Object', 185, [ValueType.TYPE_STRING], ValueType.TYPE_ADDRESS],
220
+ [MODULES.vote, 'Option Count', 186, [ValueType.TYPE_STRING], ValueType.TYPE_U64],
221
+ [MODULES.vote, 'Option Votes', 187, [ValueType.TYPE_STRING], ValueType.TYPE_U64],
220
222
  [MODULES.vote, 'Address Count Voted', 188, [], ValueType.TYPE_U64],
221
- [MODULES.vote, 'Top1 Option by Addresses', 189, [], ValueType.TYPE_VEC_U8],
223
+ [MODULES.vote, 'Top1 Option by Addresses', 189, [], ValueType.TYPE_STRING],
222
224
  [MODULES.vote, 'Top1 Count by Addresses', 190, [], ValueType.TYPE_U64],
223
- [MODULES.vote, 'Top1 Option by Votes', 191, [], ValueType.TYPE_VEC_U8],
224
- [MODULES.vote, 'Top1 Count by Votes', 192, [], ValueType.TYPE_U64],
225
-
226
- [MODULES.wowok, 'Builder', 210, [], ValueType.TYPE_ADDRESS],
227
- [MODULES.wowok, 'Everyone-Guard', 211, [], ValueType.TYPE_ADDRESS],
228
- [MODULES.wowok, 'Object of Entities', 212, [], ValueType.TYPE_ADDRESS],
229
- [MODULES.wowok, 'Grantor Count', 213, [], ValueType.TYPE_U64],
230
- [MODULES.wowok, 'Has Grantor', 214, [ValueType.TYPE_ADDRESS], ValueType.TYPE_BOOL],
231
- [MODULES.wowok, 'Grantor Name', 215, [ValueType.TYPE_ADDRESS], ValueType.TYPE_VEC_U8],
232
- [MODULES.wowok, 'Grantor Registration Time', 216, [ValueType.TYPE_ADDRESS], ValueType.TYPE_U64],
233
- [MODULES.wowok, 'Grantor Expired Time', 217, [ValueType.TYPE_ADDRESS], ValueType.TYPE_U64],
234
- [MODULES.wowok, 'Grantee Object for Grantor', 218, [ValueType.TYPE_ADDRESS], ValueType.TYPE_ADDRESS],
235
-
236
- [MODULES.entity, 'Has Entity', 230, [ValueType.TYPE_ADDRESS], ValueType.TYPE_BOOL],
237
- [MODULES.entity, 'Likes', 231, [ValueType.TYPE_ADDRESS], ValueType.TYPE_U64],
238
- [MODULES.entity, 'Dislikes', 232, [ValueType.TYPE_ADDRESS], ValueType.TYPE_U64],
239
- [MODULES.entity, 'Entity Info', 233, [ValueType.TYPE_ADDRESS], ValueType.TYPE_VEC_U8],
240
- [MODULES.entity, 'Has Resource by Entity', 234, [ValueType.TYPE_ADDRESS], ValueType.TYPE_BOOL],
241
- [MODULES.entity, 'Entity Resource', 235, [ValueType.TYPE_ADDRESS], ValueType.TYPE_ADDRESS],
225
+ [MODULES.vote, 'Top1 Option by Votes', 191, [], ValueType.TYPE_STRING],
226
+ [MODULES.vote, 'Top1 Count by Votes', 192, [], ValueType.TYPE_U64], */
227
+
228
+ [MODULES.wowok, 'Builder', 210, [], ValueType.TYPE_ADDRESS, 'Builder address of Wowok.'],
229
+ [MODULES.wowok, 'Everyone Guard', 211, [], ValueType.TYPE_ADDRESS, 'A guard that all addresses can pass through.'],
230
+ [MODULES.wowok, 'Object of Entities', 212, [], ValueType.TYPE_ADDRESS, 'The address of entity information object.'],
231
+ [MODULES.wowok, 'Grantor Count', 213, [], ValueType.TYPE_U64, 'Number of registered grantors.'],
232
+ [MODULES.wowok, 'Has Grantor', 214, [ValueType.TYPE_ADDRESS], ValueType.TYPE_BOOL, 'Whether an address has been registered as a grantor?', , 'Input:address'],
233
+ [MODULES.wowok, 'Grantor Name', 215, [ValueType.TYPE_ADDRESS], ValueType.TYPE_STRING, "Name of a grantor.", 'Input:address'],
234
+ [MODULES.wowok, 'Grantor Registration Time', 216, [ValueType.TYPE_ADDRESS], ValueType.TYPE_U64, 'Registration time of a grantor.', 'Input:address'],
235
+ [MODULES.wowok, 'Grantor Expired Time', 217, [ValueType.TYPE_ADDRESS], ValueType.TYPE_U64, 'The expiration time of a grantor.', 'Input:address'],
236
+ [MODULES.wowok, 'Grantee Object for Grantor', 218, [ValueType.TYPE_ADDRESS], ValueType.TYPE_ADDRESS, 'Grantee repository address of a grantor.', 'Input:address'],
237
+
238
+ [MODULES.entity, 'Contains Entity?', 230, [ValueType.TYPE_ADDRESS], ValueType.TYPE_BOOL, 'Is an entity already registered?', 'Input:address'],
239
+ [MODULES.entity, 'Likes', 231, [ValueType.TYPE_ADDRESS], ValueType.TYPE_U64, 'The number of likes for an address by other addresses.', 'Input:address'],
240
+ [MODULES.entity, 'Dislikes', 232, [ValueType.TYPE_ADDRESS], ValueType.TYPE_U64, 'The number of dislikes for an address by other addresses.', 'Input:address'],
241
+ [MODULES.entity, 'Entity Info', 233, [ValueType.TYPE_ADDRESS], ValueType.TYPE_VEC_U8, 'Public information about an entity.', 'Input:address'],
242
+ [MODULES.entity, 'Has Resource by Entity?', 234, [ValueType.TYPE_ADDRESS], ValueType.TYPE_BOOL, 'Whether an entity created a resource?', 'Input:address'],
243
+ [MODULES.entity, 'Entity Resource', 235, [ValueType.TYPE_ADDRESS], ValueType.TYPE_ADDRESS, 'The address of a resource object created by an entity.', 'Input:address'],
242
244
  ];
243
245
 
244
246
  static BoolCmd = Guard.QUERIES.filter(q => q[4] === ValueType.TYPE_BOOL);
@@ -266,16 +268,32 @@ export class Guard {
266
268
  }
267
269
  static NumberOptions = () : Guard_Options[] => {
268
270
  const r: Guard_Options[] = [...Guard.CmdFilter(ValueType.TYPE_U8), ...Guard.CmdFilter(ValueType.TYPE_U64),
269
- ...Guard.CmdFilter(ValueType.TYPE_U128), ...Guard.CmdFilter(ValueType.TYPE_U256)].map((v)=> { return {from:'query', name:v[1], value:v[2], group:FirstLetterUppercase(v[0])}});
270
- r.push({from:'type', name:'Txn Time', value:ContextType.TYPE_CLOCK, group:'Txn Functions'});
271
- return r;
271
+ ...Guard.CmdFilter(ValueType.TYPE_U128), ...Guard.CmdFilter(ValueType.TYPE_U256)].map((v)=> {
272
+ return {from:'query', name:v[1], value:v[2], group:FirstLetterUppercase(v[0])}});
273
+ return r.concat(Guard.Crunchings);
272
274
  }
275
+
276
+ static Signer:Guard_Options = {from:'type', name:'Txn Signer', value:ContextType.TYPE_SIGNER, group:'Txn Functions'};
277
+ static Time:Guard_Options = {from:'type', name:'Txn Time', value:ContextType.TYPE_CLOCK, group:'Txn Functions'};
278
+ static Logics = () :Guard_Options[] => LogicsInfo.map((v) => { return {from:'type', name:v[1] as string, value:v[0] as number, group:'Compare or Logic'}});
279
+ static Crunchings: Guard_Options[] = [
280
+ {from:'type', name:'Txn Time', value:ContextType.TYPE_CLOCK, group:'Txn Functions'},
281
+ {from:'type', name:'PositiveNumber Add (+)', value:OperatorType.TYPE_NUMBER_ADD, group:'Number Crunching'},
282
+ {from:'type', name:'PositiveNumber Subtract (-)', value:OperatorType.TYPE_NUMBER_SUBTRACT, group:'Number Crunching'},
283
+ {from:'type', name:'PositiveNumber Multiply (*)', value:OperatorType.TYPE_NUMBER_MULTIPLY, group:'Number Crunching'},
284
+ {from:'type', name:'PositiveNumber Devide (/)', value:OperatorType.TYPE_NUMBER_DEVIDE, group:'Number Crunching'},
285
+ {from:'type', name:'PositiveNumber Mod (%)', value:OperatorType.TYPE_NUMBER_MOD, group:'Number Crunching'},
286
+ ]
287
+
273
288
  static CommonOptions = (retType:ValueType) : Guard_Options[] => {
274
289
  return Guard.CmdFilter(retType).map((v)=> {return {from:'query', name:v[1], value:v[2], group:FirstLetterUppercase(v[0])}});
275
290
  }
291
+
276
292
  static AllOptions = () : Guard_Options[] => {
277
- return Guard.QUERIES.map((v)=>{return {from:'query', name:v[1], value:v[2], group:FirstLetterUppercase(v[0])}});
293
+ var r:Guard_Options[] = Guard.QUERIES.map((v)=>{return {from:'query', name:v[1], value:v[2], group:FirstLetterUppercase(v[0])}});
294
+ return [...r, ...Guard.Crunchings, ...Guard.Logics(), Guard.Signer, Guard.Time]
278
295
  }
296
+
279
297
  static StringOptions = () : Guard_Options[] => {
280
298
  return [...Guard.CmdFilter(ValueType.TYPE_VEC_U8), ...Guard.CmdFilter(ValueType.TYPE_STRING)].map((v) => {
281
299
  return {from:'query', name:v[1], value:v[2], group:FirstLetterUppercase(v[0])};
@@ -283,12 +301,11 @@ export class Guard {
283
301
  }
284
302
  static BoolOptions = () : Guard_Options[] => {
285
303
  const n1:Guard_Options[] = Guard.BoolCmd.map((v)=> { return {from:'query', name:v[1], value:v[2], group:FirstLetterUppercase(v[0])}});
286
- const n2:Guard_Options[] = LogicsInfo.map((v) => { return {from:'type', name:v[1] as string, value:v[0] as number, group:'Compare or Logic'}});
287
- return [...n1, ...n2]
304
+ return [...n1, ...Guard.Logics()];
288
305
  }
289
306
  static AddressOptions = () : Guard_Options[] => {
290
307
  const n1:Guard_Options[] = Guard.QUERIES.filter(q => q[4] === ValueType.TYPE_ADDRESS).map((v)=> { return {from:'query', name:v[1], value:v[2], group:FirstLetterUppercase(v[0])}});
291
- n1.push({from:'type', name:'Txn Signer', value:ContextType.TYPE_SIGNER, group:'Txn Functions'});
308
+ n1.push(Guard.Signer);
292
309
  return [...n1]
293
310
  }
294
311
 
@@ -345,9 +362,13 @@ export class GuardConstantHelper {
345
362
  }
346
363
  }
347
364
 
348
- static add_constant(constants:GuardConstant, identifier:number, type:ValueType, value:any, bNeedSerialize=true) {
349
- if (!GuardConstantHelper.IsValidIndentifier(identifier)) return false;
350
- if (!value) return false;
365
+ static add_constant(constants:GuardConstant, identifier:number, type:ValueType|ContextType, value:any, bNeedSerialize=true) {
366
+ if (!GuardConstantHelper.IsValidIndentifier(identifier)) {
367
+ ERROR(Errors.InvalidParam, 'add_constant identifier')
368
+ }
369
+ if (!value) {
370
+ ERROR(Errors.InvalidParam, 'add_constant value')
371
+ }
351
372
 
352
373
  switch (type) {
353
374
  case ValueType.TYPE_BOOL:
@@ -368,18 +389,16 @@ export class GuardConstantHelper {
368
389
  case ValueType.TYPE_VEC_BOOL:
369
390
  case ValueType.TYPE_VEC_U128:
370
391
  case ValueType.TYPE_VEC_U256:
392
+ case ValueType.TYPE_STRING:
393
+ case ValueType.TYPE_VEC_U8:
371
394
  let ser = SER_VALUE.find(s=>s.type==type);
372
395
  if (!ser) ERROR(Errors.Fail, 'add_constant: invalid type');
373
- bNeedSerialize ? constants.set(identifier, {type:type, value:Bcs.getInstance().ser(ser!.type as number, value)}) :
374
- constants.set(identifier, {type:type, value:value})
375
- return
376
- case ValueType.TYPE_VEC_U8:
377
- if (typeof(value) === 'string') {
378
- constants.set(identifier, {type:type, value:Bcs.getInstance().ser(ValueType.TYPE_STRING, value)})
396
+ if (bNeedSerialize) {
397
+ constants.set(identifier, {type:type, value:Bcs.getInstance().ser(ser!.type as number, value)})
379
398
  } else {
380
- constants.set(identifier, {type:type, value:value})
399
+ constants.set(identifier, {type:type, value:value})
381
400
  }
382
- return;
401
+ return
383
402
  default:
384
403
  ERROR(Errors.Fail, 'add_constant serialize not impl yet')
385
404
  }
@@ -388,7 +407,7 @@ export class GuardConstantHelper {
388
407
  export class GuardMaker {
389
408
  protected data : Uint8Array[] = [];
390
409
  protected type_validator : Data_Type[] = [];
391
- protected constant : GuardConstant = new Map();
410
+ protected constant : GuardConstant = new Map<number, Guard_Variable>();
392
411
 
393
412
  private static index: number = 0;
394
413
  private static get_index() {
@@ -400,8 +419,8 @@ export class GuardMaker {
400
419
 
401
420
  constructor() { }
402
421
 
403
- add_constant(type:ConstantType, value:any, bNeedSerialize=true) : number {
404
- let identifier = GuardMaker.get_index();
422
+ add_constant(type:ConstantType, value:any, identifier?:number, bNeedSerialize=true) : number {
423
+ if (identifier === undefined) identifier = GuardMaker.get_index();
405
424
  if (type == ContextType.TYPE_WITNESS_ID) {
406
425
  // add witness to constant
407
426
  GuardConstantHelper.add_future_constant(this.constant, identifier, value, undefined, bNeedSerialize);
@@ -443,9 +462,10 @@ export class GuardMaker {
443
462
  case ValueType.TYPE_VEC_U256:
444
463
  this.serValueParam(type, param);
445
464
  break;
465
+ case ValueType.TYPE_STRING:
446
466
  case ValueType.TYPE_VEC_U8:
447
467
  if (!param) ERROR(Errors.InvalidParam, 'param');
448
- this.data.push(Bcs.getInstance().ser(ValueType.TYPE_U8, type));
468
+ this.data.push(Bcs.getInstance().ser(ValueType.TYPE_U8, type)); //@ USE VEC-U8
449
469
  if (typeof(param) == 'string') {
450
470
  this.data.push(Bcs.getInstance().ser(ValueType.TYPE_STRING, param));
451
471
  } else {
@@ -538,6 +558,7 @@ export class GuardMaker {
538
558
 
539
559
  add_logic(type:OperatorType) : GuardMaker {
540
560
  let splice_len = 2;
561
+ let ret = ValueType.TYPE_BOOL;
541
562
  switch (type) {
542
563
  case OperatorType.TYPE_LOGIC_AS_U256_GREATER:
543
564
  case OperatorType.TYPE_LOGIC_AS_U256_GREATER_EQUAL:
@@ -565,17 +586,52 @@ export class GuardMaker {
565
586
  if (this.type_validator[this.type_validator.length -1] != ValueType.TYPE_BOOL) { ERROR(Errors.Fail, 'type_validator check') }
566
587
  if (this.type_validator[this.type_validator.length -2] != ValueType.TYPE_BOOL) { ERROR(Errors.Fail, 'type_validator check') }
567
588
  break;
589
+ case OperatorType.TYPE_LOGIC_AND3:
590
+ case OperatorType.TYPE_LOGIC_OR3:
591
+ splice_len = 3;
592
+ if (this.type_validator.length < splice_len) { ERROR(Errors.Fail, 'type_validator.length') }
593
+ if (this.type_validator[this.type_validator.length -1] != ValueType.TYPE_BOOL) { ERROR(Errors.Fail, 'type_validator check') }
594
+ if (this.type_validator[this.type_validator.length -2] != ValueType.TYPE_BOOL) { ERROR(Errors.Fail, 'type_validator check') }
595
+ if (this.type_validator[this.type_validator.length -3] != ValueType.TYPE_BOOL) { ERROR(Errors.Fail, 'type_validator check') }
596
+ break;
597
+ case OperatorType.TYPE_LOGIC_AND4:
598
+ case OperatorType.TYPE_LOGIC_OR4:
599
+ splice_len = 4;
600
+ if (this.type_validator.length < splice_len) { ERROR(Errors.Fail, 'type_validator.length') }
601
+ if (this.type_validator[this.type_validator.length -1] != ValueType.TYPE_BOOL) { ERROR(Errors.Fail, 'type_validator check') }
602
+ if (this.type_validator[this.type_validator.length -2] != ValueType.TYPE_BOOL) { ERROR(Errors.Fail, 'type_validator check') }
603
+ if (this.type_validator[this.type_validator.length -3] != ValueType.TYPE_BOOL) { ERROR(Errors.Fail, 'type_validator check') }
604
+ if (this.type_validator[this.type_validator.length -4] != ValueType.TYPE_BOOL) { ERROR(Errors.Fail, 'type_validator check') }
605
+ break;
568
606
  case OperatorType.TYPE_LOGIC_ALWAYS_TRUE:
569
607
  break;
608
+ case OperatorType.TYPE_NUMBER_ADD:
609
+ case OperatorType.TYPE_NUMBER_DEVIDE:
610
+ case OperatorType.TYPE_NUMBER_MULTIPLY:
611
+ case OperatorType.TYPE_NUMBER_SUBTRACT:
612
+ case OperatorType.TYPE_NUMBER_MOD:
613
+ if (this.type_validator.length < splice_len) { ERROR(Errors.Fail, 'type_validator.length') }
614
+ if (!GuardMaker.IsNumberType(this.type_validator[this.type_validator.length -1])) { ERROR(Errors.Fail, 'type_validator check') }
615
+ if (!GuardMaker.IsNumberType(this.type_validator[this.type_validator.length -2])) { ERROR(Errors.Fail, 'type_validator check') }
616
+ ret = ValueType.TYPE_U256;
617
+ break;
570
618
  default:
571
619
  ERROR(Errors.InvalidParam, 'add_logic type invalid' + type)
572
620
  }
573
621
  this.data.push(Bcs.getInstance().ser(ValueType.TYPE_U8, type)); // TYPE
574
622
  this.type_validator.splice(this.type_validator.length - splice_len); // delete type stack
575
- this.type_validator.push(ValueType.TYPE_BOOL); // add bool to type stack
623
+ this.type_validator.push(ret); // add bool to type stack
576
624
  return this;
577
625
  }
578
626
 
627
+ static IsNumberType(type:Data_Type) : boolean {
628
+ return (type === ValueType.TYPE_U8 || type === ValueType.TYPE_U64 || type === ValueType.TYPE_U128 || type === ValueType.TYPE_U256)
629
+ }
630
+
631
+ hasIdentifier(id:number) : boolean {
632
+ return this.constant.has(id)
633
+ }
634
+
579
635
  build(bNot = false) : GuardMaker {
580
636
  //console.log(this.type_validator);
581
637
  //this.data.forEach((value:Uint8Array) => console.log(value));
package/src/machine.ts CHANGED
@@ -144,10 +144,17 @@ export class Machine {
144
144
  });
145
145
  }
146
146
  } else if (forward?.permission !== undefined && IsValidU64(forward.permission)) {
147
- f = this.txb.moveCall({
148
- target:Protocol.Instance().MachineFn('forward3') as FnCallType,
149
- arguments:[this.txb.pure.u64(forward.permission), this.txb.pure.u16(weight)]
150
- });
147
+ if (forward?.guard) {
148
+ f = this.txb.moveCall({
149
+ target:Protocol.Instance().MachineFn('forward3') as FnCallType,
150
+ arguments:[this.txb.pure.u64(forward.permission), this.txb.pure.u16(weight), this.txb.object(Protocol.TXB_OBJECT(this.txb, forward.guard))]
151
+ });
152
+ } else {
153
+ f = this.txb.moveCall({
154
+ target:Protocol.Instance().MachineFn('forward4') as FnCallType,
155
+ arguments:[this.txb.pure.u64(forward.permission), this.txb.pure.u16(weight)]
156
+ });
157
+ }
151
158
  } else {
152
159
  ERROR(Errors.InvalidParam, 'forward')
153
160
  }
@@ -511,8 +518,8 @@ export class Machine {
511
518
  if (!IsValidName(forward.name)) return 'Forward name invalid'
512
519
  if (forward?.namedOperator && !IsValidName_AllowEmpty(forward?.namedOperator)) return 'Progress Operator invalid';
513
520
  if (forward?.permission && !Permission.IsValidPermissionIndex(forward?.permission)) return 'Permission index invalid';
514
- if (!forward?.permission && !forward?.namedOperator) return 'Both Permission index and Progress Operator empty';
515
- if (forward?.weight && !IsValidUintLarge(forward.weight)) return 'Weight invalid';
521
+ if (!forward?.permission && !forward?.namedOperator) return 'Business-Permissions invalid';
522
+ if (forward?.weight && !IsValidU64(forward.weight)) return 'Weight invalid';
516
523
  return ''
517
524
  }
518
525
 
package/src/passport.ts CHANGED
@@ -50,6 +50,7 @@ export interface FutureFill {
50
50
  future?: string;
51
51
  cmd?: number;
52
52
  type?: string;
53
+ identifier?: number;
53
54
  }
54
55
  export interface PassportQuery {
55
56
  guard: (string | TransactionObjectInput)[];
@@ -95,13 +96,17 @@ export class GuardParser {
95
96
  case ValueType.TYPE_OPTION_U64:
96
97
  case ValueType.TYPE_OPTION_U256:
97
98
  case ValueType.TYPE_VEC_U256:
99
+ case ValueType.TYPE_STRING:
100
+ case ValueType.TYPE_OPTION_STRING:
101
+ case ValueType.TYPE_OPTION_VEC_U8:
102
+ case ValueType.TYPE_VEC_STRING:
98
103
  let de = SER_VALUE.find(s=>s.type==v.type);
99
104
  if (!de) ERROR(Errors.Fail, 'GuardObject de error')
100
105
  value = Bcs.getInstance().de(de!.type as number, Uint8Array.from(v.value));
101
106
  break;
102
107
 
103
108
  default:
104
- ERROR(Errors.Fail, 'GuardObject constant type invalid')
109
+ ERROR(Errors.Fail, 'GuardObject constant type invalid:' + v.type)
105
110
  }
106
111
  constants.push({identifier:v.identifier, type:v.type, value:value});
107
112
  });
@@ -126,6 +131,15 @@ export class GuardParser {
126
131
  case OperatorType.TYPE_LOGIC_NOT:
127
132
  case OperatorType.TYPE_LOGIC_AND:
128
133
  case OperatorType.TYPE_LOGIC_OR:
134
+ case OperatorType.TYPE_LOGIC_AND3:
135
+ case OperatorType.TYPE_LOGIC_OR3:
136
+ case OperatorType.TYPE_LOGIC_AND4:
137
+ case OperatorType.TYPE_LOGIC_OR4:
138
+ case OperatorType.TYPE_NUMBER_ADD:
139
+ case OperatorType.TYPE_NUMBER_DEVIDE:
140
+ case OperatorType.TYPE_NUMBER_MOD:
141
+ case OperatorType.TYPE_NUMBER_MULTIPLY:
142
+ case OperatorType.TYPE_NUMBER_SUBTRACT:
129
143
  break;
130
144
  case ContextType.TYPE_CONSTANT:
131
145
  identifier = arr.shift()! as number; // identifier
@@ -305,7 +319,19 @@ export class GuardParser {
305
319
  case OperatorType.TYPE_LOGIC_AS_U256_LESSER:
306
320
  case OperatorType.TYPE_LOGIC_AS_U256_LESSER_EQUAL:
307
321
  case OperatorType.TYPE_LOGIC_AS_U256_EQUAL:
308
- current.ret_type = ValueType.TYPE_BOOL;
322
+ case OperatorType.TYPE_NUMBER_ADD:
323
+ case OperatorType.TYPE_NUMBER_DEVIDE:
324
+ case OperatorType.TYPE_NUMBER_MOD:
325
+ case OperatorType.TYPE_NUMBER_MULTIPLY:
326
+ case OperatorType.TYPE_NUMBER_SUBTRACT:
327
+ if (current.type === OperatorType.TYPE_LOGIC_AS_U256_GREATER || current.type === OperatorType.TYPE_LOGIC_AS_U256_GREATER_EQUAL ||
328
+ current.type === OperatorType.TYPE_LOGIC_AS_U256_LESSER || current.type === OperatorType.TYPE_LOGIC_AS_U256_LESSER_EQUAL ||
329
+ current.type === OperatorType.TYPE_LOGIC_AS_U256_EQUAL) {
330
+ current.ret_type = ValueType.TYPE_BOOL;
331
+ } else {
332
+ current.ret_type = ValueType.TYPE_U256;
333
+ }
334
+
309
335
  if (stack.length < 2) ERROR(Errors.Fail, 'ResolveData: ' + current.type);
310
336
  for (let i = 0; i < 2; ++i) {
311
337
  let p = stack.pop() as DeGuardData;
@@ -322,6 +348,7 @@ export class GuardParser {
322
348
  current.ret_type = ValueType.TYPE_BOOL;
323
349
  if (stack.length < 2) ERROR(Errors.Fail, 'ResolveData: ' + current.type);
324
350
  var p1 = stack.pop() as DeGuardData; var p2 = stack.pop() as DeGuardData;
351
+ console.log(p1); console.log(p2)
325
352
  if (!p1.ret_type || !p2.ret_type) ERROR(Errors.Fail, 'ResolveData: ' + current.type + ' INVALID param type');
326
353
  if (p1.ret_type != p2.ret_type) ERROR(Errors.Fail, 'ResolveData: ' + current.type + ' param type not match');
327
354
 
@@ -392,6 +419,7 @@ export class GuardParser {
392
419
  case ValueType.TYPE_OPTION_U256:
393
420
  case ValueType.TYPE_OPTION_U64:
394
421
  case ValueType.TYPE_OPTION_U8:
422
+ case ValueType.TYPE_STRING:
395
423
  current.ret_type = current.type;
396
424
  stack.push(current);
397
425
  return;
@@ -498,15 +526,15 @@ export class GuardParser {
498
526
  this.guard_list.forEach((g) => {
499
527
  g.query_list.forEach((v) => {
500
528
  if (typeof(v) !== 'string') {
501
- ret.push({guard:g.id, index:v.index, witness:v.value_or_witness, cmd:v.cmd});
529
+ ret.push({guard:g.id, index:v.index, witness:v.value_or_witness, cmd:v.cmd, identifier:v?.identifier});
502
530
  }
503
531
  })
504
532
  // cmd already in query_list, so filter it out.
505
533
  g.constant.filter((v)=>v.type === ContextType.TYPE_WITNESS_ID && v.cmd === undefined).forEach((v) => {
506
- ret.push({guard:g.id, index:v.index, witness:v.value_or_witness});
534
+ ret.push({guard:g.id, index:v.index, witness:v.value_or_witness, identifier:v?.identifier});
507
535
  })
508
536
  g.input_witness.forEach((v) => {
509
- ret.push({guard:g.id, index:v.index, witness:v.value_or_witness});
537
+ ret.push({guard:g.id, index:v.index, witness:v.value_or_witness, identifier:v?.identifier});
510
538
  })
511
539
  }); return ret;
512
540
  }
@@ -542,6 +570,11 @@ export class GuardParser {
542
570
  case OperatorType.TYPE_LOGIC_NOT:
543
571
  case OperatorType.TYPE_LOGIC_AND:
544
572
  case OperatorType.TYPE_LOGIC_OR:
573
+ case OperatorType.TYPE_NUMBER_ADD:
574
+ case OperatorType.TYPE_NUMBER_DEVIDE:
575
+ case OperatorType.TYPE_NUMBER_MOD:
576
+ case OperatorType.TYPE_NUMBER_MULTIPLY:
577
+ case OperatorType.TYPE_NUMBER_SUBTRACT:
545
578
  break;
546
579
  case ContextType.TYPE_CONSTANT:
547
580
  arr.splice(0, 1); // identifier of constant
package/src/permission.ts CHANGED
@@ -78,7 +78,7 @@ export enum PermissionIndex {
78
78
  progress_context_repository = 653,
79
79
  progress_unhold = 654,
80
80
  progress_parent = 655,
81
- user_defined_start = 10000,
81
+ user_defined_start = 1000,
82
82
  }
83
83
 
84
84
  export interface PermissionInfoType {
@@ -549,9 +549,10 @@ export class Permission {
549
549
  static PERMISSION_OWNER = 1;
550
550
  static PERMISSION_ADMIN = 2;
551
551
  static PERMISSION_OWNER_AND_ADMIN = 3;
552
+ static BUSINESS_PERMISSIONS_START = PermissionIndex.user_defined_start;
552
553
 
553
554
  static IsValidUserDefinedIndex = (index:number) => {
554
- return index >= PermissionIndex.user_defined_start && IsValidUintLarge(index)
555
+ return index >= Permission.BUSINESS_PERMISSIONS_START && IsValidUintLarge(index)
555
556
  }
556
557
 
557
558
  static IsValidPermissionIndex = (index:PermissionIndexType) : boolean => {
package/src/progress.ts CHANGED
@@ -268,22 +268,23 @@ export class Progress {
268
268
  ERROR(Errors.IsValidAddress, 'sub_id');
269
269
  }
270
270
 
271
- let diliverable = this.txb.pure.option('address', deliverables_address ? deliverables_address : undefined);
272
- let sub = this.txb.pure.option('address', sub_id ? sub_id : undefined);
273
-
271
+ const diliverable = this.txb.pure.option('address', deliverables_address ? deliverables_address : undefined);
272
+ const sub = this.txb.pure.option('address', sub_id ? sub_id : undefined);
273
+ const clock = this.txb.sharedObjectRef(Protocol.CLOCK_OBJECT);
274
+
274
275
  if (passport) {
275
276
  this.txb.moveCall({
276
277
  target:Protocol.Instance().ProgressFn('next_with_passport') as FnCallType,
277
278
  arguments: [passport, Protocol.TXB_OBJECT(this.txb, this.object), Protocol.TXB_OBJECT(this.txb, this.machine),
278
279
  this.txb.pure.string(next.next_node_name),
279
280
  this.txb.pure.string(next.forward), diliverable, sub,
280
- Protocol.TXB_OBJECT(this.txb, this.permission)],
281
+ Protocol.TXB_OBJECT(this.txb, this.permission), this.txb.object(clock)],
281
282
  })
282
283
  } else {
283
284
  this.txb.moveCall({
284
285
  target:Protocol.Instance().ProgressFn('next') as FnCallType,
285
286
  arguments: [Protocol.TXB_OBJECT(this.txb, this.object), Protocol.TXB_OBJECT(this.txb, this.machine), this.txb.pure.string(next.next_node_name),
286
- this.txb.pure.string(next.forward), diliverable, sub, Protocol.TXB_OBJECT(this.txb, this.permission)],
287
+ this.txb.pure.string(next.forward), diliverable, sub, Protocol.TXB_OBJECT(this.txb, this.permission), this.txb.object(clock)],
287
288
  })
288
289
  }
289
290
  }
package/src/protocol.ts CHANGED
@@ -62,6 +62,11 @@ export type FnCallType = `${string}::${string}::${string}`;
62
62
 
63
63
  export enum OperatorType {
64
64
  TYPE_QUERY = 1, // query wowok object
65
+ TYPE_NUMBER_ADD = 2,
66
+ TYPE_NUMBER_SUBTRACT = 3,
67
+ TYPE_NUMBER_MULTIPLY = 4,
68
+ TYPE_NUMBER_DEVIDE = 5,
69
+ TYPE_NUMBER_MOD = 6,
65
70
 
66
71
  TYPE_LOGIC_AS_U256_GREATER = 11,
67
72
  TYPE_LOGIC_AS_U256_GREATER_EQUAL = 12,
@@ -74,20 +79,28 @@ export enum OperatorType {
74
79
  TYPE_LOGIC_NOT = 19, // NOT
75
80
  TYPE_LOGIC_AND = 20, // AND
76
81
  TYPE_LOGIC_OR = 21, // OR
82
+ TYPE_LOGIC_AND3 = 22, // and
83
+ TYPE_LOGIC_AND4 = 23, // and
84
+ TYPE_LOGIC_OR3 = 24, // or
85
+ TYPE_LOGIC_OR4 = 25, // or
77
86
  }
78
87
 
79
88
  export const LogicsInfo = [
80
- [OperatorType.TYPE_LOGIC_AS_U256_GREATER, 'PositiveNumber >'],
81
- [OperatorType.TYPE_LOGIC_AS_U256_GREATER_EQUAL, 'PositiveNumber >='],
82
- [OperatorType.TYPE_LOGIC_AS_U256_LESSER, 'PositiveNumber <'],
83
- [OperatorType.TYPE_LOGIC_AS_U256_LESSER_EQUAL, 'PositiveNumber <='],
84
- [OperatorType.TYPE_LOGIC_AS_U256_EQUAL, 'PositiveNumber ='],
85
- [OperatorType.TYPE_LOGIC_EQUAL, 'Strict ='],
89
+ [OperatorType.TYPE_LOGIC_AS_U256_GREATER, 'Unsigned Integer >'],
90
+ [OperatorType.TYPE_LOGIC_AS_U256_GREATER_EQUAL, 'Unsigned Integer >='],
91
+ [OperatorType.TYPE_LOGIC_AS_U256_LESSER, 'Unsigned Integer <'],
92
+ [OperatorType.TYPE_LOGIC_AS_U256_LESSER_EQUAL, 'Unsigned Integer <='],
93
+ [OperatorType.TYPE_LOGIC_AS_U256_EQUAL, 'Unsigned Integer ='],
94
+ [OperatorType.TYPE_LOGIC_EQUAL, 'Equals ='],
86
95
  [OperatorType.TYPE_LOGIC_HAS_SUBSTRING, 'Sub String'],
87
96
  [OperatorType.TYPE_LOGIC_ALWAYS_TRUE, 'Always True'],
88
97
  [OperatorType.TYPE_LOGIC_NOT, 'Not'],
89
98
  [OperatorType.TYPE_LOGIC_AND, 'And'],
90
99
  [OperatorType.TYPE_LOGIC_OR, 'Or'],
100
+ [OperatorType.TYPE_LOGIC_AND3, 'And 3'],
101
+ [OperatorType.TYPE_LOGIC_OR3, 'Or 3'],
102
+ [OperatorType.TYPE_LOGIC_AND4, 'And 4'],
103
+ [OperatorType.TYPE_LOGIC_OR4, 'Or 4'],
91
104
  ];
92
105
 
93
106
  export enum ValueType {
@@ -123,21 +136,26 @@ export enum RepositoryValueType {
123
136
  PositiveNumber_Vec = 203,
124
137
  String = 204,
125
138
  String_Vec = 205,
139
+ Bool = 206,
126
140
  }
127
141
 
128
142
  export const RepositoryValueTypeInfo = [
129
- {type: RepositoryValueType.String, name:'String', description:'String.'},
130
- {type: RepositoryValueType.Address, name:'Address', description:'Object id or Personal address.'},
131
- {type: RepositoryValueType.PositiveNumber, name:'Positive number or Zero', description:'Positive number or 0. including u8, u16 ,..., u256'},
132
- {type: RepositoryValueType.String_Vec, name:'String vector', description:'Vector of string.'},
133
- {type: RepositoryValueType.Address_Vec, name:'Address vector', description:'Vector of address.'},
134
- {type: RepositoryValueType.PositiveNumber_Vec, name:'Positive number or Zero vector', description:'Vector of positive number or 0'},
143
+ {type: RepositoryValueType.String, name:'string', description:'String.'},
144
+ {type: RepositoryValueType.Address, name:'address', description:'Object id or Personal address.'},
145
+ {type: RepositoryValueType.PositiveNumber, name:'unsigned integer', description:'Including u8, u16 ,..., u256'},
146
+ {type: RepositoryValueType.String_Vec, name:'string vector', description:'Vector of string.'},
147
+ {type: RepositoryValueType.Address_Vec, name:'address vector', description:'Vector of address.'},
148
+ {type: RepositoryValueType.PositiveNumber_Vec, name:'unsigned integer vector', description:'Vector of unsigned integer'},
149
+ {type: RepositoryValueType.Bool, name:'bool', description:'True or False.'},
135
150
  ]
136
151
 
137
152
  export const OperatorTypeArray = (Object.values(OperatorType) as []).filter((v)=>typeof(v) === 'number') as number[];
138
153
  export const ValueTypeArray = (Object.values(ValueType) as []).filter((v)=>typeof(v) === 'number') as number[];
139
154
  export const IsValidOperatorType = (type:number) : boolean => { return OperatorTypeArray.includes(type)}
140
155
  export const IsValidValueType = (type:number) : boolean => { return ValueTypeArray.includes(type)}
156
+ export const IsNumberType = (type:ValueType | any) : boolean => { return type===ValueType.TYPE_U128 || type===ValueType.TYPE_U256 ||
157
+ type===ValueType.TYPE_U64 || type===ValueType.TYPE_U8
158
+ }
141
159
 
142
160
  export enum ContextType {
143
161
  TYPE_SIGNER = 60,
@@ -155,7 +173,7 @@ interface ValueTypeString {
155
173
  export const SER_VALUE: ValueTypeString[] = [
156
174
  {type: ValueType.TYPE_BOOL, name: 'bool', description:'boolean. eg:true or false', validator:(value:any) => { return (value === true || value === false)}},
157
175
  {type: ValueType.TYPE_ADDRESS, name: 'address', description:'address or object-id. eg:0x6789af', validator:IsValidAddress},
158
- {type: ContextType.TYPE_WITNESS_ID, name: 'future address', description:"eg: machine's future progress, service's future order", validator:IsValidAddress},
176
+ {type: ContextType.TYPE_WITNESS_ID, name: 'future address', description:"eg: address of the Machine that will generate future Progress, address of the Service that will generate future Order", validator:IsValidAddress},
159
177
  {type: ContextType.TYPE_SIGNER, name: 'txn signer', description:"signer address of the transaction, "},
160
178
  {type: ContextType.TYPE_CLOCK, name: 'txn time', description:"unsigned-64 number for the transaction time"},
161
179
  {type: ValueType.TYPE_U64, name: 'number', description:'unsigned-64 number. eg:23870233', validator:IsValidU64},
@@ -175,7 +193,7 @@ export const SER_VALUE: ValueTypeString[] = [
175
193
  {type: ValueType.TYPE_OPTION_U256, name: 'option', description:'option of u256. eg:none or u256 value'},
176
194
  {type: ValueType.TYPE_VEC_U256, name: '[number]', description:'unsigned-256 number array. eg:[123, 778888, 42312]'},
177
195
  {type: ValueType.TYPE_VEC_STRING, name: '[string]', description:'ascii string array. eg:["abc", "hi"]'},
178
- {type: ValueType.TYPE_STRING, name: 'string', description:'ascii string. eg:"wowok"', },
196
+ {type: ValueType.TYPE_STRING, name: 'string', description:'eg:"wowok"', },
179
197
  {type: ValueType.TYPE_OPTION_STRING, name: 'option', description:'option of string. eg:none or string value'},
180
198
  {type: ValueType.TYPE_U256, name: 'number', description:'unsigned-256 number. eg:12345678901233', validator:IsValidUintLarge},
181
199
  ]
@@ -189,14 +207,20 @@ export enum ENTRYPOINT {
189
207
  devnet = 'devnet',
190
208
  localnet = 'localnet'
191
209
  }
192
-
210
+ /*
193
211
  const TESTNET = {
194
- package: "0x98e5209cf5cf31a38ebde562681441d7544f38ee6a879266dc7273160635f6ba",
195
- wowok_object: '0x676243951ed0d32341680b10d888887dfb39603b1af747036164e90fdfed1274',
196
- entity_object: '0xe32334d663d0e7d058682b5170632672a11df1cdaa3f522859e75b451bdc67d5',
197
- treasury_cap:'0x10bec6d987cf7fc16fc62246f3c382d84ee285d9ec9f038bc03845fe620bf2d3',
212
+ package: "0xbd3d0929072f7647e521bf72851ccdc7e2169052b22bfdc5b49439c48cfb119a",
213
+ wowok_object: '0xb0a521a287e9d5e08932b3984dbe6ce159e836179c41bd08c556ef77ecdb7439',
214
+ entity_object: '0x16aab98920e7341d1dc19631031253234b2b71fc2ab8c32d65ee3ded8072acef',
215
+ treasury_cap:'0xb75a2ca2f651755c134ad521175f33f9e3f9008ad44340f76b3229e1f30cfdff',
216
+ }
217
+ */
218
+ const TESTNET = {
219
+ package: "0x72a2ee21e11ee0c0d8fd9212127b12be0cdf7722b1e91c85a15a79cff3f7d9b0",
220
+ wowok_object: '0x3e69e10a8ab426c5e6d4392841bb6f6b9b45b7fa5feb9fcf23d7616a2effba0c',
221
+ entity_object: '0x53606d845cdedf0b256d27b3c0b0764265b2c272f3ad743a018ea4e8e59f3c74',
222
+ treasury_cap:'0xbbbc1fcab63e3373d53669507d7a6042282edef398273dcc04fe24db47c4881d',
198
223
  }
199
-
200
224
  const MAINNET = {
201
225
  package: "",
202
226
  wowok_object: '',
package/src/repository.ts CHANGED
@@ -22,16 +22,16 @@ export type Repository_Policy = {
22
22
  key:string;
23
23
  description: string;
24
24
  data_type: RepositoryValueType;
25
- permission?: PermissionIndexType; // PermissionIndex like, must be geater than 10000
25
+ permission?: PermissionIndexType; // PermissionIndex like, must be geater than 1000
26
26
  }
27
27
  export type Repository_Policy_Data = {
28
28
  key: string;
29
- data: Repository_Value[];
30
- value_type?: ValueType;
29
+ data: Repository_Value[];
30
+ value_type?: ValueType; //
31
31
  }
32
32
  export type Repository_Value = {
33
33
  address: string; // UID: address or objectid
34
- bcsBytes: Uint8Array;
34
+ bcsBytes: Uint8Array; // BCS contents. Notice that: First Byte be the Type by caller, or specify type with 'Repository_Policy_Data.value_type' field.
35
35
  }
36
36
 
37
37
  export class Repository {
@@ -425,6 +425,8 @@ export class Repository {
425
425
  d = '0x' + d;
426
426
  } else if (type === ValueType.TYPE_VEC_ADDRESS) {
427
427
  d = d.map((v:string) => { return ('0x' + v) } );
428
+ } else if (type === ValueType.TYPE_BOOL) {
429
+ d = d ? 'True' : 'False'
428
430
  }
429
431
  };
430
432
  return {object:v?.data?.content?.fields?.id?.id, id:(v?.data?.content?.fields as any)?.name?.fields?.id,
@@ -454,7 +456,7 @@ export class Repository {
454
456
  } return undefined
455
457
  }
456
458
 
457
- static ResolveRepositoryData = (dataType:RepositoryValueType, data:string | string[]) : {type:ValueType, data: Uint8Array} | undefined => {
459
+ static ResolveRepositoryData = (dataType:RepositoryValueType, data:string | boolean | string[]) : {type:ValueType, data: Uint8Array} | undefined => {
458
460
  if (dataType === RepositoryValueType.String) {
459
461
  return {type: ValueType.TYPE_STRING, data: Bcs.getInstance().ser(ValueType.TYPE_VEC_U8, new TextEncoder().encode(data.toString()))}
460
462
  } else if (dataType === RepositoryValueType.PositiveNumber) {
@@ -491,6 +493,9 @@ export class Repository {
491
493
  return new TextEncoder().encode(v);
492
494
  })
493
495
  return {type: ValueType.TYPE_VEC_STRING, data: Bcs.getInstance().ser(ValueType.TYPE_VEC_VEC_U8, r)}
496
+ } else if (dataType === RepositoryValueType.Bool) {
497
+ if (typeof(data) !== 'boolean') return undefined;
498
+ return {type:ValueType.TYPE_BOOL, data:Bcs.getInstance().ser(ValueType.TYPE_BOOL, data)}
494
499
  }
495
500
  return undefined
496
501
  }
package/src/utils.ts CHANGED
@@ -2,7 +2,7 @@ import { BCS, getSuiMoveConfig, } from '@mysten/bcs';
2
2
  import { SuiObjectResponse, DynamicFieldPage } from '@mysten/sui/client';
3
3
  import { ERROR, Errors } from './exception';
4
4
  import { isValidSuiAddress} from '@mysten/sui/utils'
5
- import { RepositoryValueType, ValueType, Protocol } from './protocol'
5
+ import { RepositoryValueType, ValueType, Protocol, ContextType, OperatorType } from './protocol'
6
6
 
7
7
  export const MAX_U8 = BigInt('255');
8
8
  export const MAX_U64 = BigInt('18446744073709551615');
@@ -13,7 +13,7 @@ export const OPTION_NONE = 0;
13
13
 
14
14
  export const ValueTypeConvert = (type:ValueType | null | undefined) : RepositoryValueType | number => {
15
15
  if (type === ValueType.TYPE_U8 || type === ValueType.TYPE_U64 || type === ValueType.TYPE_U128 ||
16
- type === ValueType.TYPE_U256 || type === ValueType.TYPE_BOOL) {
16
+ type === ValueType.TYPE_U256) {
17
17
  return RepositoryValueType.PositiveNumber
18
18
  } else if (type === ValueType.TYPE_VEC_U8 || type === ValueType.TYPE_VEC_U64 || type === ValueType.TYPE_VEC_U128 ||
19
19
  type === ValueType.TYPE_VEC_U256|| type === ValueType.TYPE_VEC_BOOL) {
@@ -26,7 +26,9 @@ export const ValueTypeConvert = (type:ValueType | null | undefined) : Repository
26
26
  return RepositoryValueType.String
27
27
  } else if (type === ValueType.TYPE_VEC_STRING) {
28
28
  return RepositoryValueType.String_Vec
29
- }
29
+ } else if (type === ValueType.TYPE_BOOL) {
30
+ return RepositoryValueType.Bool
31
+ }
30
32
  return -1;
31
33
  }
32
34
 
@@ -192,7 +194,7 @@ export class Bcs {
192
194
  return this.bcs.ser('Option<u32>', {'some': data}).toBytes();
193
195
  }
194
196
 
195
- ser(type:ValueType | string, data:Uint8Array | any) : Uint8Array {
197
+ ser(type:ValueType | ContextType | string, data:Uint8Array | any) : Uint8Array {
196
198
  if (typeof(type) === 'string') {
197
199
  return this.bcs.ser(type, data).toBytes();
198
200
  }
@@ -242,6 +244,8 @@ export class Bcs {
242
244
  return this.bcs.ser(BCS.STRING, data).toBytes();
243
245
  case ValueType.TYPE_VEC_STRING:
244
246
  return this.bcs.ser('vector<string>', data).toBytes();
247
+ case ContextType.TYPE_WITNESS_ID:
248
+ return this.bcs.ser(BCS.ADDRESS, data).toBytes();
245
249
  default:
246
250
  ERROR(Errors.bcsTypeInvalid, 'ser');
247
251
  }
@@ -411,6 +415,9 @@ export const IsValidU64 = (value:string | number | undefined | bigint) : boolean
411
415
  export const IsValidU128 = (value:string | number | undefined | bigint) : boolean => {
412
416
  return IsValidBigint(value, MAX_U128, BigInt(0))
413
417
  }
418
+ export const IsValidU256 = (value:string | number | undefined | bigint) : boolean => {
419
+ return IsValidBigint(value, MAX_U256, BigInt(0))
420
+ }
414
421
 
415
422
  export const IsValidTokenType = (argType: string) : boolean => {
416
423
  if (!argType || argType.length === 0) {