wowok 1.3.11 → 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.11",
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,111 +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_STRING], ValueType.TYPE_BOOL],
113
- [MODULES.repository, 'Has Permission of Policy', 13, [ValueType.TYPE_STRING], ValueType.TYPE_BOOL],
114
- [MODULES.repository, 'Permission of Policy', 14, [ValueType.TYPE_STRING], ValueType.TYPE_U64],
115
- [MODULES.repository, 'Value Type of Policy', 15, [ValueType.TYPE_STRING], 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_STRING], ValueType.TYPE_BOOL],
118
- [MODULES.repository, 'Value without Type', 18, [ValueType.TYPE_ADDRESS, ValueType.TYPE_STRING], ValueType.TYPE_VEC_U8],
119
- [MODULES.repository, 'Value', 19, [ValueType.TYPE_ADDRESS, ValueType.TYPE_STRING], 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_STRING],
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_STRING],
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_STRING], ValueType.TYPE_BOOL],
139
- [MODULES.progress, 'Is Operator for Address', 58, [ValueType.TYPE_STRING, 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],
142
- [MODULES.progress, 'Last session time', 61, [], ValueType.TYPE_U64],
143
- [MODULES.progress, 'Session time', 62, [ValueType.TYPE_STRING], ValueType.TYPE_U64],
144
-
145
- [MODULES.demand, 'Permission', 71, [], ValueType.TYPE_ADDRESS],
146
- [MODULES.demand, 'Has Deadline', 72, [], ValueType.TYPE_BOOL],
147
- [MODULES.demand, 'Deadline', 73, [], ValueType.TYPE_U64],
148
- [MODULES.demand, 'Bounty Count', 74, [], ValueType.TYPE_U64],
149
- [MODULES.demand, 'Has Guard', 75, [], ValueType.TYPE_BOOL],
150
- [MODULES.demand, 'Guard', 76, [], ValueType.TYPE_ADDRESS],
151
- [MODULES.demand, 'Has Service Picked', 77, [], ValueType.TYPE_BOOL],
152
- [MODULES.demand, 'Service Picked', 78, [], ValueType.TYPE_ADDRESS],
153
- [MODULES.demand, 'Presenter Count', 79, [], ValueType.TYPE_U64],
154
- [MODULES.demand, 'Is Presenter', 80, [ValueType.TYPE_ADDRESS], ValueType.TYPE_BOOL],
155
- [MODULES.demand, 'Who Got Bounty', 81, [ValueType.TYPE_ADDRESS], 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'],
156
157
 
157
- [MODULES.order, 'Amount', 91, [], ValueType.TYPE_U64],
158
- [MODULES.order, 'Payer', 92, [], ValueType.TYPE_ADDRESS],
159
- [MODULES.order, 'Service', 93, [], ValueType.TYPE_ADDRESS],
160
- [MODULES.order, 'Has Progress', 94, [], ValueType.TYPE_BOOL],
161
- [MODULES.order, 'Progress', 95, [], ValueType.TYPE_ADDRESS],
162
- [MODULES.order, 'Required Info Counts', 96, [], ValueType.TYPE_U64],
163
- [MODULES.order, 'Discount Used', 97, [], ValueType.TYPE_BOOL],
164
- [MODULES.order, 'Discount', 98, [], ValueType.TYPE_ADDRESS],
165
- [MODULES.order, 'Balance', 99, [], ValueType.TYPE_U64],
166
- [MODULES.order, 'Be Refunded', 100, [], ValueType.TYPE_BOOL],
167
- [MODULES.order, 'Be Withdrawed', 101, [], ValueType.TYPE_BOOL],
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?'],
168
169
 
169
- [MODULES.service, 'Permission', 111, [], ValueType.TYPE_ADDRESS],
170
- [MODULES.service, 'Payee', 112, [], ValueType.TYPE_ADDRESS],
171
- [MODULES.service, 'Has Buy-Guard', 113, [], ValueType.TYPE_BOOL],
172
- [MODULES.service, 'Buy-Guard', 114, [], ValueType.TYPE_ADDRESS],
173
- [MODULES.service, 'Contains Repository', 115, [ValueType.TYPE_ADDRESS], ValueType.TYPE_BOOL],
174
- [MODULES.service, 'Has Withdraw-Guard', 116, [ValueType.TYPE_ADDRESS], ValueType.TYPE_BOOL],
175
- [MODULES.service, 'Withdraw-Guard Percent', 117, [ValueType.TYPE_ADDRESS], ValueType.TYPE_U64],
176
- [MODULES.service, 'Has Refund-Guard', 118, [ValueType.TYPE_ADDRESS], ValueType.TYPE_BOOL],
177
- [MODULES.service, 'Refund-Guard Percent', 119, [ValueType.TYPE_ADDRESS], ValueType.TYPE_U64],
178
- [MODULES.service, 'Has Sale Item', 120, [ValueType.TYPE_STRING], ValueType.TYPE_BOOL],
179
- [MODULES.service, 'Sale Item Price', 121, [ValueType.TYPE_STRING], ValueType.TYPE_U64],
180
- [MODULES.service, 'Sale Item Inventory', 122, [ValueType.TYPE_STRING], ValueType.TYPE_U64],
181
- [MODULES.service, 'Has Machine', 123, [], ValueType.TYPE_BOOL],
182
- [MODULES.service, 'Machine', 124, [], ValueType.TYPE_ADDRESS],
183
- [MODULES.service, 'Paused', 125, [], ValueType.TYPE_BOOL],
184
- [MODULES.service, 'Published', 126, [], ValueType.TYPE_BOOL],
185
- [MODULES.service, 'Has Required Info', 127, [], ValueType.TYPE_BOOL],
186
- [MODULES.service, 'Required Info of Service-Pubkey', 128, [], ValueType.TYPE_STRING],
187
- [MODULES.service, 'Required Info', 129, [], ValueType.TYPE_STRING],
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.'],
188
189
 
189
- [MODULES.reward, 'Permission', 151, [], ValueType.TYPE_ADDRESS],
190
- [MODULES.reward, 'Reward Count Left', 152, [], ValueType.TYPE_U64],
191
- [MODULES.reward, 'Reward Count Supplied', 153, [], ValueType.TYPE_U64],
192
- [MODULES.reward, 'Guard Count', 154, [], ValueType.TYPE_U64],
193
- [MODULES.reward, 'Has Guard', 155, [ValueType.TYPE_ADDRESS], ValueType.TYPE_BOOL],
194
- [MODULES.reward, 'Guard Portion', 156, [ValueType.TYPE_ADDRESS], ValueType.TYPE_U64],
195
- [MODULES.reward, 'Deadline', 157, [], ValueType.TYPE_U64],
196
- [MODULES.reward, 'Has Claimed by Address', 158, [ValueType.TYPE_ADDRESS], ValueType.TYPE_BOOL],
197
- [MODULES.reward, 'Claimed by Address', 159, [ValueType.TYPE_ADDRESS], ValueType.TYPE_U64],
198
- [MODULES.reward, 'Address Count Claimed', 160, [], ValueType.TYPE_U64],
199
- [MODULES.reward, 'Is Sponsor', 161, [ValueType.TYPE_ADDRESS], ValueType.TYPE_BOOL],
200
- [MODULES.reward, 'Portion by Sponsor', 162, [ValueType.TYPE_ADDRESS], ValueType.TYPE_U64],
201
- [MODULES.reward, 'Sponsor Count', 163, [], ValueType.TYPE_U64],
202
- [MODULES.reward, 'Allow Repeat Claim', 164, [], ValueType.TYPE_BOOL],
203
- [MODULES.reward, 'Claimed Portion by Address', 165, [ValueType.TYPE_ADDRESS], ValueType.TYPE_U64],
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?'],
204
204
 
205
- [MODULES.vote, 'Permission', 171, [], ValueType.TYPE_ADDRESS],
205
+ /* [MODULES.vote, 'Permission', 171, [], ValueType.TYPE_ADDRESS],
206
206
  [MODULES.vote, 'Options Locked', 172, [], ValueType.TYPE_BOOL],
207
207
  [MODULES.vote, 'Deadline Locked', 173, [], ValueType.TYPE_BOOL],
208
208
  [MODULES.vote, 'Vote-Guard Locked', 174, [], ValueType.TYPE_BOOL],
@@ -223,24 +223,24 @@ export class Guard {
223
223
  [MODULES.vote, 'Top1 Option by Addresses', 189, [], ValueType.TYPE_STRING],
224
224
  [MODULES.vote, 'Top1 Count by Addresses', 190, [], ValueType.TYPE_U64],
225
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],
229
- [MODULES.wowok, 'Everyone-Guard', 211, [], ValueType.TYPE_ADDRESS],
230
- [MODULES.wowok, 'Object of Entities', 212, [], ValueType.TYPE_ADDRESS],
231
- [MODULES.wowok, 'Grantor Count', 213, [], ValueType.TYPE_U64],
232
- [MODULES.wowok, 'Has Grantor', 214, [ValueType.TYPE_ADDRESS], ValueType.TYPE_BOOL],
233
- [MODULES.wowok, 'Grantor Name', 215, [ValueType.TYPE_ADDRESS], ValueType.TYPE_STRING],
234
- [MODULES.wowok, 'Grantor Registration Time', 216, [ValueType.TYPE_ADDRESS], ValueType.TYPE_U64],
235
- [MODULES.wowok, 'Grantor Expired Time', 217, [ValueType.TYPE_ADDRESS], ValueType.TYPE_U64],
236
- [MODULES.wowok, 'Grantee Object for Grantor', 218, [ValueType.TYPE_ADDRESS], ValueType.TYPE_ADDRESS],
237
-
238
- [MODULES.entity, 'Has Entity', 230, [ValueType.TYPE_ADDRESS], ValueType.TYPE_BOOL],
239
- [MODULES.entity, 'Likes', 231, [ValueType.TYPE_ADDRESS], ValueType.TYPE_U64],
240
- [MODULES.entity, 'Dislikes', 232, [ValueType.TYPE_ADDRESS], ValueType.TYPE_U64],
241
- [MODULES.entity, 'Entity Info', 233, [ValueType.TYPE_ADDRESS], ValueType.TYPE_VEC_U8],
242
- [MODULES.entity, 'Has Resource by Entity', 234, [ValueType.TYPE_ADDRESS], ValueType.TYPE_BOOL],
243
- [MODULES.entity, 'Entity Resource', 235, [ValueType.TYPE_ADDRESS], ValueType.TYPE_ADDRESS],
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'],
244
244
  ];
245
245
 
246
246
  static BoolCmd = Guard.QUERIES.filter(q => q[4] === ValueType.TYPE_BOOL);
@@ -270,21 +270,30 @@ export class Guard {
270
270
  const r: Guard_Options[] = [...Guard.CmdFilter(ValueType.TYPE_U8), ...Guard.CmdFilter(ValueType.TYPE_U64),
271
271
  ...Guard.CmdFilter(ValueType.TYPE_U128), ...Guard.CmdFilter(ValueType.TYPE_U256)].map((v)=> {
272
272
  return {from:'query', name:v[1], value:v[2], group:FirstLetterUppercase(v[0])}});
273
- r.push({from:'type', name:'Txn Time', value:ContextType.TYPE_CLOCK, group:'Txn Functions'});
274
- r.push({from:'type', name:'PositiveNumber Add (+)', value:OperatorType.TYPE_NUMBER_ADD, group:'Number Crunching'});
275
- r.push({from:'type', name:'PositiveNumber Subtract (-)', value:OperatorType.TYPE_NUMBER_SUBTRACT, group:'Number Crunching'});
276
- r.push({from:'type', name:'PositiveNumber Multiply (*)', value:OperatorType.TYPE_NUMBER_MULTIPLY, group:'Number Crunching'});
277
- r.push({from:'type', name:'PositiveNumber Devide (/)', value:OperatorType.TYPE_NUMBER_DEVIDE, group:'Number Crunching'});
278
- r.push({from:'type', name:'PositiveNumber Mod (%)', value:OperatorType.TYPE_NUMBER_MOD, group:'Number Crunching'});
279
- return r;
273
+ return r.concat(Guard.Crunchings);
280
274
  }
281
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
+
282
288
  static CommonOptions = (retType:ValueType) : Guard_Options[] => {
283
289
  return Guard.CmdFilter(retType).map((v)=> {return {from:'query', name:v[1], value:v[2], group:FirstLetterUppercase(v[0])}});
284
290
  }
291
+
285
292
  static AllOptions = () : Guard_Options[] => {
286
- 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]
287
295
  }
296
+
288
297
  static StringOptions = () : Guard_Options[] => {
289
298
  return [...Guard.CmdFilter(ValueType.TYPE_VEC_U8), ...Guard.CmdFilter(ValueType.TYPE_STRING)].map((v) => {
290
299
  return {from:'query', name:v[1], value:v[2], group:FirstLetterUppercase(v[0])};
@@ -292,12 +301,11 @@ export class Guard {
292
301
  }
293
302
  static BoolOptions = () : Guard_Options[] => {
294
303
  const n1:Guard_Options[] = Guard.BoolCmd.map((v)=> { return {from:'query', name:v[1], value:v[2], group:FirstLetterUppercase(v[0])}});
295
- const n2:Guard_Options[] = LogicsInfo.map((v) => { return {from:'type', name:v[1] as string, value:v[0] as number, group:'Compare or Logic'}});
296
- return [...n1, ...n2]
304
+ return [...n1, ...Guard.Logics()];
297
305
  }
298
306
  static AddressOptions = () : Guard_Options[] => {
299
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])}});
300
- n1.push({from:'type', name:'Txn Signer', value:ContextType.TYPE_SIGNER, group:'Txn Functions'});
308
+ n1.push(Guard.Signer);
301
309
  return [...n1]
302
310
  }
303
311
 
@@ -354,9 +362,13 @@ export class GuardConstantHelper {
354
362
  }
355
363
  }
356
364
 
357
- static add_constant(constants:GuardConstant, identifier:number, type:ValueType, value:any, bNeedSerialize=true) {
358
- if (!GuardConstantHelper.IsValidIndentifier(identifier)) return false;
359
- 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
+ }
360
372
 
361
373
  switch (type) {
362
374
  case ValueType.TYPE_BOOL:
@@ -377,18 +389,16 @@ export class GuardConstantHelper {
377
389
  case ValueType.TYPE_VEC_BOOL:
378
390
  case ValueType.TYPE_VEC_U128:
379
391
  case ValueType.TYPE_VEC_U256:
392
+ case ValueType.TYPE_STRING:
393
+ case ValueType.TYPE_VEC_U8:
380
394
  let ser = SER_VALUE.find(s=>s.type==type);
381
395
  if (!ser) ERROR(Errors.Fail, 'add_constant: invalid type');
382
- bNeedSerialize ? constants.set(identifier, {type:type, value:Bcs.getInstance().ser(ser!.type as number, value)}) :
383
- constants.set(identifier, {type:type, value:value})
384
- return
385
- case ValueType.TYPE_VEC_U8:
386
- if (typeof(value) === 'string') {
387
- 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)})
388
398
  } else {
389
- constants.set(identifier, {type:type, value:value})
399
+ constants.set(identifier, {type:type, value:value})
390
400
  }
391
- return;
401
+ return
392
402
  default:
393
403
  ERROR(Errors.Fail, 'add_constant serialize not impl yet')
394
404
  }
@@ -397,7 +407,7 @@ export class GuardConstantHelper {
397
407
  export class GuardMaker {
398
408
  protected data : Uint8Array[] = [];
399
409
  protected type_validator : Data_Type[] = [];
400
- protected constant : GuardConstant = new Map();
410
+ protected constant : GuardConstant = new Map<number, Guard_Variable>();
401
411
 
402
412
  private static index: number = 0;
403
413
  private static get_index() {
@@ -409,8 +419,8 @@ export class GuardMaker {
409
419
 
410
420
  constructor() { }
411
421
 
412
- add_constant(type:ConstantType, value:any, bNeedSerialize=true) : number {
413
- 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();
414
424
  if (type == ContextType.TYPE_WITNESS_ID) {
415
425
  // add witness to constant
416
426
  GuardConstantHelper.add_future_constant(this.constant, identifier, value, undefined, bNeedSerialize);
@@ -576,6 +586,23 @@ export class GuardMaker {
576
586
  if (this.type_validator[this.type_validator.length -1] != ValueType.TYPE_BOOL) { ERROR(Errors.Fail, 'type_validator check') }
577
587
  if (this.type_validator[this.type_validator.length -2] != ValueType.TYPE_BOOL) { ERROR(Errors.Fail, 'type_validator check') }
578
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;
579
606
  case OperatorType.TYPE_LOGIC_ALWAYS_TRUE:
580
607
  break;
581
608
  case OperatorType.TYPE_NUMBER_ADD:
@@ -601,6 +628,10 @@ export class GuardMaker {
601
628
  return (type === ValueType.TYPE_U8 || type === ValueType.TYPE_U64 || type === ValueType.TYPE_U128 || type === ValueType.TYPE_U256)
602
629
  }
603
630
 
631
+ hasIdentifier(id:number) : boolean {
632
+ return this.constant.has(id)
633
+ }
634
+
604
635
  build(bNot = false) : GuardMaker {
605
636
  //console.log(this.type_validator);
606
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,10 @@ 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:
129
138
  case OperatorType.TYPE_NUMBER_ADD:
130
139
  case OperatorType.TYPE_NUMBER_DEVIDE:
131
140
  case OperatorType.TYPE_NUMBER_MOD:
@@ -517,15 +526,15 @@ export class GuardParser {
517
526
  this.guard_list.forEach((g) => {
518
527
  g.query_list.forEach((v) => {
519
528
  if (typeof(v) !== 'string') {
520
- 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});
521
530
  }
522
531
  })
523
532
  // cmd already in query_list, so filter it out.
524
533
  g.constant.filter((v)=>v.type === ContextType.TYPE_WITNESS_ID && v.cmd === undefined).forEach((v) => {
525
- 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});
526
535
  })
527
536
  g.input_witness.forEach((v) => {
528
- 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});
529
538
  })
530
539
  }); return ret;
531
540
  }
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/protocol.ts CHANGED
@@ -79,20 +79,28 @@ export enum OperatorType {
79
79
  TYPE_LOGIC_NOT = 19, // NOT
80
80
  TYPE_LOGIC_AND = 20, // AND
81
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
82
86
  }
83
87
 
84
88
  export const LogicsInfo = [
85
- [OperatorType.TYPE_LOGIC_AS_U256_GREATER, 'PositiveNumber >'],
86
- [OperatorType.TYPE_LOGIC_AS_U256_GREATER_EQUAL, 'PositiveNumber >='],
87
- [OperatorType.TYPE_LOGIC_AS_U256_LESSER, 'PositiveNumber <'],
88
- [OperatorType.TYPE_LOGIC_AS_U256_LESSER_EQUAL, 'PositiveNumber <='],
89
- [OperatorType.TYPE_LOGIC_AS_U256_EQUAL, 'PositiveNumber ='],
90
- [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 ='],
91
95
  [OperatorType.TYPE_LOGIC_HAS_SUBSTRING, 'Sub String'],
92
96
  [OperatorType.TYPE_LOGIC_ALWAYS_TRUE, 'Always True'],
93
97
  [OperatorType.TYPE_LOGIC_NOT, 'Not'],
94
98
  [OperatorType.TYPE_LOGIC_AND, 'And'],
95
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'],
96
104
  ];
97
105
 
98
106
  export enum ValueType {
@@ -128,21 +136,26 @@ export enum RepositoryValueType {
128
136
  PositiveNumber_Vec = 203,
129
137
  String = 204,
130
138
  String_Vec = 205,
139
+ Bool = 206,
131
140
  }
132
141
 
133
142
  export const RepositoryValueTypeInfo = [
134
- {type: RepositoryValueType.String, name:'String', description:'String.'},
135
- {type: RepositoryValueType.Address, name:'Address', description:'Object id or Personal address.'},
136
- {type: RepositoryValueType.PositiveNumber, name:'Positive number or Zero', description:'Positive number or 0. including u8, u16 ,..., u256'},
137
- {type: RepositoryValueType.String_Vec, name:'String vector', description:'Vector of string.'},
138
- {type: RepositoryValueType.Address_Vec, name:'Address vector', description:'Vector of address.'},
139
- {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.'},
140
150
  ]
141
151
 
142
152
  export const OperatorTypeArray = (Object.values(OperatorType) as []).filter((v)=>typeof(v) === 'number') as number[];
143
153
  export const ValueTypeArray = (Object.values(ValueType) as []).filter((v)=>typeof(v) === 'number') as number[];
144
154
  export const IsValidOperatorType = (type:number) : boolean => { return OperatorTypeArray.includes(type)}
145
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
+ }
146
159
 
147
160
  export enum ContextType {
148
161
  TYPE_SIGNER = 60,
@@ -160,7 +173,7 @@ interface ValueTypeString {
160
173
  export const SER_VALUE: ValueTypeString[] = [
161
174
  {type: ValueType.TYPE_BOOL, name: 'bool', description:'boolean. eg:true or false', validator:(value:any) => { return (value === true || value === false)}},
162
175
  {type: ValueType.TYPE_ADDRESS, name: 'address', description:'address or object-id. eg:0x6789af', validator:IsValidAddress},
163
- {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},
164
177
  {type: ContextType.TYPE_SIGNER, name: 'txn signer', description:"signer address of the transaction, "},
165
178
  {type: ContextType.TYPE_CLOCK, name: 'txn time', description:"unsigned-64 number for the transaction time"},
166
179
  {type: ValueType.TYPE_U64, name: 'number', description:'unsigned-64 number. eg:23870233', validator:IsValidU64},
@@ -180,7 +193,7 @@ export const SER_VALUE: ValueTypeString[] = [
180
193
  {type: ValueType.TYPE_OPTION_U256, name: 'option', description:'option of u256. eg:none or u256 value'},
181
194
  {type: ValueType.TYPE_VEC_U256, name: '[number]', description:'unsigned-256 number array. eg:[123, 778888, 42312]'},
182
195
  {type: ValueType.TYPE_VEC_STRING, name: '[string]', description:'ascii string array. eg:["abc", "hi"]'},
183
- {type: ValueType.TYPE_STRING, name: 'string', description:'ascii string. eg:"wowok"', },
196
+ {type: ValueType.TYPE_STRING, name: 'string', description:'eg:"wowok"', },
184
197
  {type: ValueType.TYPE_OPTION_STRING, name: 'option', description:'option of string. eg:none or string value'},
185
198
  {type: ValueType.TYPE_U256, name: 'number', description:'unsigned-256 number. eg:12345678901233', validator:IsValidUintLarge},
186
199
  ]
@@ -194,14 +207,20 @@ export enum ENTRYPOINT {
194
207
  devnet = 'devnet',
195
208
  localnet = 'localnet'
196
209
  }
197
-
210
+ /*
198
211
  const TESTNET = {
199
212
  package: "0xbd3d0929072f7647e521bf72851ccdc7e2169052b22bfdc5b49439c48cfb119a",
200
213
  wowok_object: '0xb0a521a287e9d5e08932b3984dbe6ce159e836179c41bd08c556ef77ecdb7439',
201
214
  entity_object: '0x16aab98920e7341d1dc19631031253234b2b71fc2ab8c32d65ee3ded8072acef',
202
215
  treasury_cap:'0xb75a2ca2f651755c134ad521175f33f9e3f9008ad44340f76b3229e1f30cfdff',
203
216
  }
204
-
217
+ */
218
+ const TESTNET = {
219
+ package: "0x72a2ee21e11ee0c0d8fd9212127b12be0cdf7722b1e91c85a15a79cff3f7d9b0",
220
+ wowok_object: '0x3e69e10a8ab426c5e6d4392841bb6f6b9b45b7fa5feb9fcf23d7616a2effba0c',
221
+ entity_object: '0x53606d845cdedf0b256d27b3c0b0764265b2c272f3ad743a018ea4e8e59f3c74',
222
+ treasury_cap:'0xbbbc1fcab63e3373d53669507d7a6042282edef398273dcc04fe24db47c4881d',
223
+ }
205
224
  const MAINNET = {
206
225
  package: "",
207
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) {