wowok 1.7.13 → 1.7.16

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.
Files changed (48) hide show
  1. package/dist/arbitration.d.ts.map +1 -1
  2. package/dist/arbitration.js +21 -32
  3. package/dist/arbitration.js.map +1 -1
  4. package/dist/entity.d.ts +1 -0
  5. package/dist/entity.d.ts.map +1 -1
  6. package/dist/entity.js +12 -6
  7. package/dist/entity.js.map +1 -1
  8. package/dist/exception.d.ts +2 -1
  9. package/dist/exception.d.ts.map +1 -1
  10. package/dist/exception.js +1 -0
  11. package/dist/exception.js.map +1 -1
  12. package/dist/guard.d.ts.map +1 -1
  13. package/dist/guard.js +8 -4
  14. package/dist/guard.js.map +1 -1
  15. package/dist/payment.d.ts +2 -2
  16. package/dist/payment.d.ts.map +1 -1
  17. package/dist/payment.js +2 -2
  18. package/dist/payment.js.map +1 -1
  19. package/dist/protocol.d.ts +21 -19
  20. package/dist/protocol.d.ts.map +1 -1
  21. package/dist/protocol.js +211 -58
  22. package/dist/protocol.js.map +1 -1
  23. package/dist/service.d.ts +2 -2
  24. package/dist/service.d.ts.map +1 -1
  25. package/dist/service.js +5 -6
  26. package/dist/service.js.map +1 -1
  27. package/package.json +5 -2
  28. package/src/arbitration.ts +0 -551
  29. package/src/demand.ts +0 -300
  30. package/src/entity.ts +0 -171
  31. package/src/exception.ts +0 -37
  32. package/src/guard.ts +0 -810
  33. package/src/index.ts +0 -40
  34. package/src/machine.ts +0 -542
  35. package/src/passport.ts +0 -777
  36. package/src/payment.ts +0 -94
  37. package/src/permission.ts +0 -550
  38. package/src/progress.ts +0 -367
  39. package/src/protocol.ts +0 -549
  40. package/src/repository.ts +0 -680
  41. package/src/resource.ts +0 -155
  42. package/src/service.ts +0 -1349
  43. package/src/treasury.ts +0 -425
  44. package/src/utils.ts +0 -660
  45. package/src/wowok.ts +0 -70
  46. package/tsconfig.json +0 -30
  47. package/tsconfig.tsbuildinfo +0 -1
  48. package/webpack.config.cjs +0 -23
package/src/guard.ts DELETED
@@ -1,810 +0,0 @@
1
-
2
-
3
- import { Protocol, LogicsInfo, GuardAddress, FnCallType, Data_Type, MODULES, ContextType, ValueType, OperatorType, TxbObject, GuardObject, IsValidOperatorType} from './protocol.js';
4
- import { concatenate, array_equal, IsValidU8, IsValidDesription, Bcs, IsValidAddress, FirstLetterUppercase, insertAtHead } from './utils.js';
5
- import { ERROR, Errors } from './exception.js';
6
- import { Transaction as TransactionBlock } from '@mysten/sui/transactions';
7
- import { bcs } from '@mysten/sui/bcs'
8
-
9
- export type GuardConstant = Map<number, Guard_Variable>;
10
-
11
- export interface Guard_Variable {
12
- type: ValueType ,
13
- value?: Uint8Array,
14
- bWitness : boolean,
15
- }
16
-
17
- export interface Guard_Options {
18
- from: 'query' | 'type';
19
- name: string;
20
- value: number;
21
- group?: string;
22
- return: ValueType | 'number' | 'any';
23
- }
24
-
25
- export interface GuardAnswer {
26
- txb: TransactionBlock;
27
- err?: string;
28
- identifiers: number[];
29
- }
30
-
31
- export type OnQueryAnswer = (answer: GuardAnswer) => void;
32
-
33
- export interface GuardQuery {
34
- module: MODULES;
35
- query_name: string;
36
- query_id: number;
37
- parameters: ValueType[];
38
- return: ValueType;
39
- description: string;
40
- parameters_description?: string[];
41
- }
42
-
43
- // commands for check guard (repository data query)
44
- export const CMD_CHECK_GUARD = [112, 113, 114, 115, 116, 117, 118, 119];
45
-
46
- export const GUARD_QUERIES:GuardQuery[] = [
47
- // module, 'name', 'id', [input], output
48
- {module:MODULES.permission, query_name:'Owner', query_id:1, parameters:[], return:ValueType.TYPE_ADDRESS, description:"Owner's address."},
49
- {module:MODULES.permission, query_name:'Is Admin', query_id:2, parameters:[ValueType.TYPE_ADDRESS], return:ValueType.TYPE_BOOL, description:'Is a certain address an administrator?', parameters_description:['address']},
50
- {module:MODULES.permission, query_name:'Has Rights', query_id:3, parameters:[ValueType.TYPE_ADDRESS, ValueType.TYPE_U64], return:ValueType.TYPE_BOOL, description:'Does an address have a certain permission(Admin always have permissions)?', parameters_description:['address', 'permission index']},
51
- {module:MODULES.permission, query_name:'Contains Address', query_id:4, parameters:[ValueType.TYPE_ADDRESS], return:ValueType.TYPE_BOOL, description:'Whether an address is included in the personnel permission table?', parameters_description:['address']},
52
- {module:MODULES.permission, query_name:'Contains Permission', query_id:5, parameters:[ValueType.TYPE_ADDRESS, ValueType.TYPE_U64], return:ValueType.TYPE_BOOL, description:'Whether a certain permission for a certain address is defined in the personnel permission table?', parameters_description:['address', 'permission index']},
53
- {module:MODULES.permission, query_name:'Contains Permission Guard', query_id:6, parameters:[ValueType.TYPE_ADDRESS, ValueType.TYPE_U64], return:ValueType.TYPE_BOOL, description:'Whether a permission guard for a certain address is defined in the personnel permission table?', parameters_description:['address', 'permission index']},
54
- {module:MODULES.permission, query_name:'Permission Guard', query_id:7, parameters:[ValueType.TYPE_ADDRESS, ValueType.TYPE_U64], return:ValueType.TYPE_ADDRESS, description:'Permission guard for a certain address.', parameters_description:['address', 'permission index']},
55
- {module:MODULES.permission, query_name:'Number of Entities', query_id:8, parameters:[], return:ValueType.TYPE_U64, description:'Number of entities in the personnel permission table.', },
56
- {module:MODULES.permission, query_name:'Number of Admin', query_id:9, parameters:[], return:ValueType.TYPE_U64, description:'Number of administrators.', },
57
-
58
- {module:MODULES.repository, query_name:'Permission', query_id:100, parameters:[], return:ValueType.TYPE_ADDRESS, description:'Permission object address.', },
59
- {module:MODULES.repository, query_name:'Contains Policy', query_id:101, parameters:[ValueType.TYPE_STRING], return:ValueType.TYPE_BOOL, description:'Is a consensus policy included?', parameters_description:['the filed name']},
60
- {module:MODULES.repository, query_name:'Is Permission set of Policy', query_id:102, parameters:[ValueType.TYPE_STRING], return:ValueType.TYPE_BOOL, description:'Does a certain consensus policy set data operation permissions?', parameters_description:['the policy name']},
61
- {module:MODULES.repository, query_name:'Permission of Policy', query_id:103, parameters:[ValueType.TYPE_STRING], return:ValueType.TYPE_U64, description:'The permission index of a certain consensus policy in the Permission object.', parameters_description:['the policy name']},
62
- {module:MODULES.repository, query_name:'Value Type of Policy', query_id:104, parameters:[ValueType.TYPE_STRING], return:ValueType.TYPE_U8, description:'Data types defined by consensus policy.', parameters_description:['the policy name']},
63
- {module:MODULES.repository, query_name:'Contains Data', query_id:105, parameters:[ValueType.TYPE_ADDRESS, ValueType.TYPE_STRING], return:ValueType.TYPE_BOOL, description:'Does it contain data for a certain field of an address?', parameters_description:['address','the field name']},
64
- {module:MODULES.repository, query_name:'Is Guard for data query been set', query_id:106, parameters:[], return:ValueType.TYPE_BOOL, description:'Has the guard for data query been set?', parameters_description:[]},
65
- {module:MODULES.repository, query_name:'Guard address for data query', query_id:107, parameters:[], return: ValueType.TYPE_ADDRESS, description:'The guard address for data query.', parameters_description:[]},
66
- {module:MODULES.repository, query_name:'Type', query_id:108, parameters:[], return:ValueType.TYPE_U8, description:'The repository Type. 0: Normal; 1: Wowok greenee.', },
67
- {module:MODULES.repository, query_name:'Policy Mode', query_id:109, parameters:[], return:ValueType.TYPE_U8, description:'Policy Mode. 0: Free mode; 1: Strict mode.', },
68
- {module:MODULES.repository, query_name:'Reference Count', query_id:110, parameters:[], return:ValueType.TYPE_U64, description:'The number of times it is referenced by other objects.', },
69
- {module:MODULES.repository, query_name:'Is Referenced by An Object', query_id:111, parameters:[ValueType.TYPE_ADDRESS], return:ValueType.TYPE_BOOL, description:'Is it referenced by an object?', parameters_description:['address']},
70
- {module:MODULES.repository, query_name:'Number Data', query_id:112, parameters:[ValueType.TYPE_ADDRESS, ValueType.TYPE_STRING], return:ValueType.TYPE_U256, description:'Data for a field at an address and get unsigned integer type data.', parameters_description:['address', 'the field name']},
71
- {module:MODULES.repository, query_name:'String Data', query_id:113, parameters:[ValueType.TYPE_ADDRESS, ValueType.TYPE_STRING], return:ValueType.TYPE_STRING, description:'Data for a field at an address and get string type data.', parameters_description:['address', 'the field name']},
72
- {module:MODULES.repository, query_name:'Address Data', query_id:114, parameters:[ValueType.TYPE_ADDRESS, ValueType.TYPE_STRING], return:ValueType.TYPE_ADDRESS, description:'Data for a field at an address and get address type data.', parameters_description:['address', 'the field name']},
73
- {module:MODULES.repository, query_name:'Bool Data', query_id:115, parameters:[ValueType.TYPE_ADDRESS, ValueType.TYPE_STRING], return:ValueType.TYPE_BOOL, description:'Data for a field at an address and get bool type data.', parameters_description:['address', 'the field name']},
74
- {module:MODULES.repository, query_name:'Number Vector Data', query_id:116, parameters:[ValueType.TYPE_ADDRESS, ValueType.TYPE_STRING], return:ValueType.TYPE_VEC_U256, description:'Data for a field at an address and get unsigned integer vector type data.', parameters_description:['address', 'the field name']},
75
- {module:MODULES.repository, query_name:'String Vector Data', query_id:117, parameters:[ValueType.TYPE_ADDRESS, ValueType.TYPE_STRING], return:ValueType.TYPE_VEC_STRING, description:'Data for a field at an address and get string vector type data.', parameters_description:['address', 'the field name']},
76
- {module:MODULES.repository, query_name:'Address Vector Data', query_id:118, parameters:[ValueType.TYPE_ADDRESS, ValueType.TYPE_STRING], return:ValueType.TYPE_VEC_ADDRESS, description:'Data for a field at an address and get address vector type data.', parameters_description:['address', 'the field name']},
77
- //{module:MODULES.repository, query_name:'Bool Vector Data', query_id:119, parameters:[ValueType.TYPE_ADDRESS, ValueType.TYPE_STRING], return: ValueType.TYPE_VEC_BOOL, description:'Data for a field at an address and get bool vector type data.', parameters_description:['address', 'the field name']},
78
- //{module:MODULES.repository, query_name:'Raw data without Type', query_id:106, parameters:[ValueType.TYPE_ADDRESS, ValueType.TYPE_STRING], return:ValueType.TYPE_VEC_U8, description:'Data for a field at an address and does not contain data type information.', parameters_description:['address', 'the field name']},
79
- //{module:MODULES.repository, query_name:'Raw data', query_id:107, parameters:[ValueType.TYPE_ADDRESS, ValueType.TYPE_STRING], return:ValueType.TYPE_VEC_U8, description:'Data for a field at an address, and the first byte contains data type information.', parameters_description:['address', 'the field name']},
80
-
81
- {module:MODULES.entity, query_name:'Has Entity', query_id:200, parameters:[ValueType.TYPE_ADDRESS], return:ValueType.TYPE_BOOL, description:'Is an entity already registered?', parameters_description:['address']},
82
- {module:MODULES.entity, query_name:'Likes', query_id:201, parameters:[ValueType.TYPE_ADDRESS], return:ValueType.TYPE_U64, description:'The number of likes for an address by other addresses.', parameters_description:['address']},
83
- {module:MODULES.entity, query_name:'Dislikes', query_id:202, parameters:[ValueType.TYPE_ADDRESS], return:ValueType.TYPE_U64, description:'The number of dislikes for an address by other addresses.', parameters_description:['address']},
84
- {module:MODULES.entity, query_name:'Info Count', query_id:203, parameters:[ValueType.TYPE_ADDRESS], return:ValueType.TYPE_U64, description:'Public Infomation count of the entity.', parameters_description:['address']},
85
- {module:MODULES.entity, query_name:'Has Resource by Entity', query_id:204, parameters:[ValueType.TYPE_ADDRESS], return:ValueType.TYPE_BOOL, description:'Whether an entity created a resource?', parameters_description:['address']},
86
- {module:MODULES.entity, query_name:'Entity Resource', query_id:205, parameters:[ValueType.TYPE_ADDRESS], return:ValueType.TYPE_ADDRESS, description:'The address of a resource object created by an entity.', parameters_description:['address']},
87
- {module:MODULES.entity, query_name:'Info', query_id:206, parameters:[ValueType.TYPE_ADDRESS, ValueType.TYPE_STRING], return:ValueType.TYPE_STRING, description:'The information of the entity (such as name, location, etc.).', parameters_description:['address', 'info name']},
88
-
89
- {module:MODULES.demand, query_name:'Permission', query_id:300, parameters:[], return:ValueType.TYPE_ADDRESS, description:'Permission object address.', },
90
- {module:MODULES.demand, query_name:'Deadline', query_id:302, parameters:[], return:ValueType.TYPE_U64, description:'The expiration time of presenting.', },
91
- {module:MODULES.demand, query_name:'Bounty Count', query_id:303, parameters:[], return:ValueType.TYPE_U64, description:'Number of Bounties.', },
92
- {module:MODULES.demand, query_name:'Has Guard', query_id:304, parameters:[], return:ValueType.TYPE_BOOL, description:'Whether the present guard is set?', },
93
- {module:MODULES.demand, query_name:'Guard', query_id:305, parameters:[], return:ValueType.TYPE_ADDRESS, description:'The present guard address.', },
94
- {module:MODULES.demand, query_name:'Has Service Picked', query_id:306, parameters:[], return:ValueType.TYPE_BOOL, description:'Whether a service has been picked and bounties given?', },
95
- {module:MODULES.demand, query_name:'Service Picked', query_id:307, parameters:[], return:ValueType.TYPE_ADDRESS, description:'Service address that has been picked.', },
96
- {module:MODULES.demand, query_name:'Presenter Count', query_id:308, parameters:[], return:ValueType.TYPE_U64, description:'Number of presenters.', },
97
- {module:MODULES.demand, query_name:'Has Service Recommended', query_id:309, parameters:[ValueType.TYPE_ADDRESS], return:ValueType.TYPE_BOOL, description:'Is a certain service has been recommended?', parameters_description:['service address']},
98
- {module:MODULES.demand, query_name:'Presenter of the Service', query_id:310, parameters:[ValueType.TYPE_ADDRESS], return:ValueType.TYPE_ADDRESS, description:'Address that recommends the service', parameters_description:['service address']},
99
- {module:MODULES.demand, query_name:'Type', query_id:311, parameters:[], return:ValueType.TYPE_STRING, description:'The type name(eg. contains "2::sui::SUI")', parameters_description:[]},
100
- {module:MODULES.demand, query_name:'Type with Original Ids', query_id:312, parameters:[], return:ValueType.TYPE_STRING, description:'The type name(eg. contains "2::sui::SUI") with original ids', parameters_description:[]},
101
- {module:MODULES.demand, query_name:'Location', query_id:313, parameters:[], return:ValueType.TYPE_STRING, description:'location or coordinate address', parameters_description:[]},
102
-
103
- {module:MODULES.service, query_name:'Permission', query_id:400, parameters:[], return:ValueType.TYPE_ADDRESS, description:'Permission object address.', },
104
- {module:MODULES.service, query_name:'Payee', query_id:401, parameters:[], return:ValueType.TYPE_ADDRESS, description:'Payee address, that all order withdrawals will be collected to this address.', },
105
- {module:MODULES.service, query_name:'Has Buying Guard', query_id:402, parameters:[], return:ValueType.TYPE_BOOL, description:'Is the guard condition of buying set?', },
106
- {module:MODULES.service, query_name:'Buying Guard', query_id:403, parameters:[], return:ValueType.TYPE_ADDRESS, description:'Buying guard, that Purchase only if you meet the conditions of the guard.', },
107
- {module:MODULES.service, query_name:'Contains Repository', query_id:404, parameters:[ValueType.TYPE_ADDRESS], return:ValueType.TYPE_BOOL, description:"Is a certain repository one of the service's consensus repositories?", parameters_description:['address']},
108
- {module:MODULES.service, query_name:'Has Withdrawing Guard', query_id:405, parameters:[ValueType.TYPE_ADDRESS], return:ValueType.TYPE_BOOL, description:'Whether a certain guard is set when withdrawing money?', parameters_description:['address']},
109
- {module:MODULES.service, query_name:'Withdrawing Guard Percent', query_id:406, parameters:[ValueType.TYPE_ADDRESS], return:ValueType.TYPE_U64, description:'The percentage of withdrawals allowed by a certain withdrawal guard.', parameters_description:['address']},
110
- {module:MODULES.service, query_name:'Has Refunding Guard', query_id:407, parameters:[ValueType.TYPE_ADDRESS], return:ValueType.TYPE_BOOL, description:'Whether a certain guard is set when refunding money?', parameters_description:['address']},
111
- {module:MODULES.service, query_name:'Refunding Guard Percent', query_id:408, parameters:[ValueType.TYPE_ADDRESS], return:ValueType.TYPE_U64, description:'The percentage of refund allowed by a certain refund guard.', parameters_description:['address']},
112
- {module:MODULES.service, query_name:'Has Sales Item', query_id:409, parameters:[ValueType.TYPE_STRING], return:ValueType.TYPE_BOOL, description:'Is there a sales item for the service?', parameters_description:['the item name']},
113
- {module:MODULES.service, query_name:'Sale Item Price', query_id:410, parameters:[ValueType.TYPE_STRING], return:ValueType.TYPE_U64, description:'What is the price of a certain sale item?', parameters_description:['the item name']},
114
- {module:MODULES.service, query_name:'Sale Item Inventory', query_id:411, parameters:[ValueType.TYPE_STRING], return:ValueType.TYPE_U64, description:'How much inventory is there for a certain sales item?', parameters_description:['the item name']},
115
- {module:MODULES.service, query_name:'Has Machine', query_id:412, parameters:[], return:ValueType.TYPE_BOOL, description:"Has the machine(progress generator) that serves the order been set up?", },
116
- {module:MODULES.service, query_name:'Machine', query_id:413, parameters:[], return:ValueType.TYPE_ADDRESS, description:'Machine address, that generate progresses serving the execution process of order.', },
117
- {module:MODULES.service, query_name:'Paused', query_id:414, parameters:[], return:ValueType.TYPE_BOOL, description:'Pause the creation of new order?'},
118
- {module:MODULES.service, query_name:'Published', query_id:415, parameters:[], return:ValueType.TYPE_BOOL, description:'Is it allowed to create orders?'},
119
- {module:MODULES.service, query_name:'Has Required Info', query_id:416, parameters:[], return:ValueType.TYPE_BOOL, description:'Whether the necessary information that needs to be provided by the customer is set?', },
120
- {module:MODULES.service, query_name:'Required Info of Service-Pubkey', query_id:417, parameters:[], return:ValueType.TYPE_STRING, description:'The public key used to encrypt customer information, and only the service provider can decrypt and view customer information.', },
121
- {module:MODULES.service, query_name:'Required Info', query_id:418, parameters:[], return:ValueType.TYPE_VEC_STRING, description:'Names of the required information item that needs to be provided by the customer.', },
122
- {module:MODULES.service, query_name:'Number of Treasuries', query_id:419, parameters:[], return:ValueType.TYPE_U64, description:'The number of treasuries that can be externally withdrawn for purposes such as compensation or incentives.', },
123
- {module:MODULES.service, query_name:'Contains Treasury', query_id:420, parameters:[ValueType.TYPE_ADDRESS], return:ValueType.TYPE_BOOL, description:'Does it contain externally withdrawable Treasury for purposes such as compensation or incentives?', parameters_description:['treasury address']},
124
- {module:MODULES.service, query_name:'Number of Arbitrations', query_id:421, parameters:[], return:ValueType.TYPE_U64, description:'The number of arbitrations that allows a refund to be made from the order at any time based on the arbitration result.', },
125
- {module:MODULES.service, query_name:'Contains Arbitration', query_id:422, parameters:[ValueType.TYPE_ADDRESS], return:ValueType.TYPE_BOOL, description:'Does it contain an arbitration that allows a refund to be made from the order at any time based on the arbitration result.?', parameters_description:['arbitration address']},
126
- {module:MODULES.service, query_name:'Type', query_id:423, parameters:[], return:ValueType.TYPE_STRING, description:'The type name(eg. contains "2::sui::SUI")', parameters_description:[]},
127
- {module:MODULES.service, query_name:'Type with Original Ids', query_id:424, parameters:[], return:ValueType.TYPE_STRING, description:'The type name(eg. contains "2::sui::SUI") with original ids', parameters_description:[]},
128
- {module:MODULES.service, query_name:'Location', query_id:425, parameters:[], return:ValueType.TYPE_STRING, description:'location or coordinate address', parameters_description:[]},
129
-
130
- {module:MODULES.order, query_name:'Amount', query_id:500, parameters:[], return:ValueType.TYPE_U64, description:'Order amount.', },
131
- {module:MODULES.order, query_name:'Payer', query_id:501, parameters:[], return:ValueType.TYPE_ADDRESS, description:'Order payer.', },
132
- {module:MODULES.order, query_name:'Service', query_id:502, parameters:[], return:ValueType.TYPE_ADDRESS, description:'Service for creating orders.', },
133
- {module:MODULES.order, query_name:'Has Progress', query_id:503, parameters:[], return:ValueType.TYPE_BOOL, description:'Is there a Progress for executing the order process?', },
134
- {module:MODULES.order, query_name:'Progress', query_id:504, parameters:[], return:ValueType.TYPE_ADDRESS, description:'Progress address for executing the order process.', },
135
- {module:MODULES.order, query_name:'Required Info', query_id:505, parameters:[], return:ValueType.TYPE_BOOL, description:'Is Required Info set?', },
136
- {module:MODULES.order, query_name:'Discount Used', query_id:506, parameters:[], return:ValueType.TYPE_BOOL, description:'Discount coupon used for this order?', },
137
- {module:MODULES.order, query_name:'Discount', query_id:507, parameters:[], return:ValueType.TYPE_ADDRESS, description:'Discount address that already used.', },
138
- {module:MODULES.order, query_name:'Balance', query_id:508, parameters:[], return:ValueType.TYPE_U64, description:'The amount currently in the order.', },
139
- {module:MODULES.order, query_name:'Number of Agents', query_id:511, parameters:[], return:ValueType.TYPE_U64, description:'The number of agents for the order.', },
140
- {module:MODULES.order, query_name:'Has Agent', query_id:512, parameters:[ValueType.TYPE_ADDRESS], return:ValueType.TYPE_BOOL, description:'Whether an address is an order agent?', parameters_description:['agent address']},
141
- {module:MODULES.order, query_name:'Number of Disputes', query_id:513, parameters:[], return:ValueType.TYPE_U64, description:'Number of arbitrations for the order.', },
142
- {module:MODULES.order, query_name:'Has Arb', query_id:514, parameters:[ValueType.TYPE_ADDRESS], return:ValueType.TYPE_BOOL, description:'Does the order contain an Arb for arbitration?', parameters_description:['arb address']},
143
- {module:MODULES.order, query_name:'Type', query_id:515, parameters:[], return:ValueType.TYPE_STRING, description:'The type name(eg. contains "2::sui::SUI")', parameters_description:[]},
144
- {module:MODULES.order, query_name:'Type with Original Ids', query_id:516, parameters:[], return:ValueType.TYPE_STRING, description:'The type name(eg. contains "2::sui::SUI") with original ids', parameters_description:[]},
145
- {module:MODULES.order, query_name:'Number of Items', query_id:517, parameters:[], return:ValueType.TYPE_U64, description:'The number of the purchased items', parameters_description:[]},
146
- {module:MODULES.order, query_name:'Has Item', query_id:518, parameters:[ValueType.TYPE_STRING], return:ValueType.TYPE_BOOL, description:'Has the order included the purchase of a certain item?', parameters_description:['item name']},
147
- {module:MODULES.order, query_name:'Item Price', query_id:519, parameters:[ValueType.TYPE_STRING], return:ValueType.TYPE_U64, description:'The price of the purchased item', parameters_description:['item name']},
148
- {module:MODULES.order, query_name:'Item Quantity', query_id:520, parameters:[ValueType.TYPE_STRING], return:ValueType.TYPE_U64, description:'The quantity of the purchased item', parameters_description:['item name']},
149
-
150
- {module:MODULES.machine, query_name:'Permission', query_id:700, parameters:[], return:ValueType.TYPE_ADDRESS, description:'Permission object address.', },
151
- {module:MODULES.machine, query_name:'Paused', query_id:701, parameters:[], return:ValueType.TYPE_BOOL, description:'Pause the creation of new Progress?', },
152
- {module:MODULES.machine, query_name:'Published', query_id:702, parameters:[], return:ValueType.TYPE_BOOL, description:'Is it allowed to create Progress?', },
153
- {module:MODULES.machine, query_name:'Is Consensus Repository', query_id:703, parameters:[ValueType.TYPE_ADDRESS], return:ValueType.TYPE_BOOL, description:'Whether an address is a consensus repository?', parameters_description:['adddress']},
154
- {module:MODULES.machine, query_name:'Has Endpoint', query_id:704, parameters:[], return:ValueType.TYPE_BOOL, description:'Is the endpoint set?', },
155
- {module:MODULES.machine, query_name:'Endpoint', query_id:705, parameters:[], return:ValueType.TYPE_STRING, description:'Endpoint url/ipfs.', },
156
-
157
- {module:MODULES.progress, query_name:'Machine', query_id:800, parameters:[], return:ValueType.TYPE_ADDRESS, description:'The Machine object that created this Progress.', },
158
- {module:MODULES.progress, query_name:'Current Node', query_id:801, parameters:[], return:ValueType.TYPE_STRING, description:'The name of the currently running node.', },
159
- {module:MODULES.progress, query_name:'Has Parent', query_id:802, parameters:[], return:ValueType.TYPE_BOOL, description:'Is the parent Progress defined?', },
160
- {module:MODULES.progress, query_name:'Parent', query_id:803, parameters:[], return:ValueType.TYPE_ADDRESS, description:'The parent Progress, that contains some child Progress.', },
161
- {module:MODULES.progress, query_name:'Has Task', query_id:804, parameters:[], return:ValueType.TYPE_BOOL, description:'Does it contain clear task(eg. an Order)?', },
162
- {module:MODULES.progress, query_name:'Task', query_id:805, parameters:[], return:ValueType.TYPE_ADDRESS, description:'Task object address.', },
163
- {module:MODULES.progress, query_name:'Has Unique Permission', query_id:806, parameters:[ValueType.TYPE_STRING], return:ValueType.TYPE_BOOL, description:'Does Progress define a unique operation permission?', parameters_description:['operator name']},
164
- {module:MODULES.progress, query_name:'Is Unique Permission Operator', query_id:807, parameters:[ValueType.TYPE_STRING, ValueType.TYPE_ADDRESS], return:ValueType.TYPE_BOOL, description:'Is an address an operator with unique permissions?', parameters_description:['operator name','address']},
165
- {module:MODULES.progress, query_name:'Has Context Repository', query_id:808, parameters:[], return:ValueType.TYPE_BOOL, description:'Whether the repository reference for Progress is set?', },
166
- {module:MODULES.progress, query_name:'Context Repository', query_id:809, parameters:[], return:ValueType.TYPE_ADDRESS, description:'Repository reference for Progress.', },
167
- {module:MODULES.progress, query_name:'Last Session Time', query_id:810, parameters:[], return:ValueType.TYPE_U64, description:'Time when the previous session was completed.', },
168
- {module:MODULES.progress, query_name:'Last Session Node', query_id:811, parameters:[], return:ValueType.TYPE_STRING, description:'The name of the last completed node.', },
169
- {module:MODULES.progress, query_name:'Current Session-id', query_id:812, parameters:[], return:ValueType.TYPE_U64, description:'The session id of ongoing node.', },
170
- {module:MODULES.progress, query_name:'Parent Session-id', query_id:813, parameters:[], return:ValueType.TYPE_U64, description:'The child process was started in the Session-id phase of the parent process.', },
171
- {module:MODULES.progress, query_name:'Parent Next Node', query_id:814, parameters:[], return:ValueType.TYPE_STRING, description:'The child process is started at the next node stage of the parent process.', },
172
- {module:MODULES.progress, query_name:'Parent Forward', query_id:815, parameters:[], return:ValueType.TYPE_STRING, description:'The child process is started in the Forward phase of the next node of the parent process.', },
173
- {module:MODULES.progress, query_name:'Parent Node', query_id:816, parameters:[], return:ValueType.TYPE_STRING, description:'The node name of the parent process where the child process is located.', },
174
- {module:MODULES.progress, query_name:'Forward Accomplished', query_id:817, parameters:[ValueType.TYPE_U64, ValueType.TYPE_STRING, ValueType.TYPE_STRING], return:ValueType.TYPE_BOOL, description:'Has the forward been accomplished?', parameters_description:['session-id', 'next node name', 'forward name']},
175
- {module:MODULES.progress, query_name:'Forward Operator', query_id:818, parameters:[ValueType.TYPE_U64, ValueType.TYPE_STRING, ValueType.TYPE_STRING], return:ValueType.TYPE_ADDRESS, description:'The forward operator.', parameters_description:['session-id', 'next node name', 'forward name']},
176
- {module:MODULES.progress, query_name:'Forward Message', query_id:819, parameters:[ValueType.TYPE_U64, ValueType.TYPE_STRING, ValueType.TYPE_STRING], return:ValueType.TYPE_STRING, description:'The forward message.', parameters_description:['session-id', 'next node name', 'forward name']},
177
- {module:MODULES.progress, query_name:'Forward Order Count', query_id:820, parameters:[ValueType.TYPE_U64, ValueType.TYPE_STRING, ValueType.TYPE_STRING], return:ValueType.TYPE_U64, description:'The forward Order count.', parameters_description:['session-id', 'next node name', 'forward name']},
178
- {module:MODULES.progress, query_name:'Forward time', query_id:821, parameters:[ValueType.TYPE_U64, ValueType.TYPE_STRING, ValueType.TYPE_STRING], return:ValueType.TYPE_U64, description:'The time when the forward was last triggered.', parameters_description:['session-id', 'next node name', 'forward name']},
179
- {module:MODULES.progress, query_name:'Closest Session Time', query_id:822, parameters:[ValueType.TYPE_STRING], return:ValueType.TYPE_U64, description:'The time a node that closest time to the current node completes its session.', parameters_description:['node name']},
180
- {module:MODULES.progress, query_name:'Closest Forward Accomplished', query_id:823, parameters:[ValueType.TYPE_STRING, ValueType.TYPE_STRING, ValueType.TYPE_STRING], return:ValueType.TYPE_BOOL, description:'Has the forward been accomplished?', parameters_description:['node name', 'next node name', 'forward name']},
181
- {module:MODULES.progress, query_name:'Closest Forward Operator', query_id:824, parameters:[ValueType.TYPE_STRING, ValueType.TYPE_STRING, ValueType.TYPE_STRING], return:ValueType.TYPE_ADDRESS, description:'The operator of the forward that closest time to the current node.', parameters_description:['node name', 'next node name', 'forward name']},
182
- {module:MODULES.progress, query_name:'Closest Forward Message', query_id:825, parameters:[ValueType.TYPE_STRING, ValueType.TYPE_STRING, ValueType.TYPE_STRING], return:ValueType.TYPE_STRING, description:'The message of the forward that closest time to the current node.', parameters_description:['node name', 'next node name', 'forward name']},
183
- {module:MODULES.progress, query_name:'Closest Forward Order Count', query_id:826, parameters:[ValueType.TYPE_STRING, ValueType.TYPE_STRING, ValueType.TYPE_STRING], return:ValueType.TYPE_U64, description:'The Order count of the forward that closest time to the current node.', parameters_description:['node name', 'next node name', 'forward name']},
184
- {module:MODULES.progress, query_name:'Closest Forward time', query_id:827, parameters:[ValueType.TYPE_STRING, ValueType.TYPE_STRING, ValueType.TYPE_STRING], return:ValueType.TYPE_U64, description:'The time when the forward that closest time to the current node was last triggered.', parameters_description:['node name', 'next node name', 'forward name']},
185
- {module:MODULES.progress, query_name:'Node Sessions completed', query_id:828, parameters:[ValueType.TYPE_STRING], return:ValueType.TYPE_U64, description:'The number of completed sessions at the node', parameters_description:['node name']},
186
-
187
- {module:MODULES.wowok, query_name:'Builder', query_id:900, parameters:[], return:ValueType.TYPE_ADDRESS, description:'Builder address of Wowok.', },
188
- {module:MODULES.wowok, query_name:'Object of Entities', query_id:901, parameters:[], return:ValueType.TYPE_ADDRESS, description:'The address of entity information object.', },
189
- /* {module:MODULES.wowok, query_name:'Grantor Count', query_id:902, parameters:[], return:ValueType.TYPE_U64, description:'Number of registered grantors.', },
190
- {module:MODULES.wowok, query_name:'Has Grantor', query_id:903, parameters:[ValueType.TYPE_ADDRESS], return:ValueType.TYPE_BOOL, description:'Whether an address has been registered as a grantor?', parameters_description:['address']},
191
- {module:MODULES.wowok, query_name:'Grantor Name', query_id:904, parameters:[ValueType.TYPE_ADDRESS], return:ValueType.TYPE_STRING, description:"Name of a grantor.", parameters_description:['address']},
192
- {module:MODULES.wowok, query_name:'Grantor Registration Time', query_id:905, parameters:[ValueType.TYPE_ADDRESS], return:ValueType.TYPE_U64, description:'Registration time of a grantor.', parameters_description:['address']},
193
- {module:MODULES.wowok, query_name:'Grantor Expired Time', query_id:906, parameters:[ValueType.TYPE_ADDRESS], return:ValueType.TYPE_U64, description:'The expiration time of a grantor.', parameters_description:['address']},
194
- {module:MODULES.wowok, query_name:'Grantee Object for Grantor', query_id:907, parameters:[ValueType.TYPE_ADDRESS], return:ValueType.TYPE_ADDRESS, description:'Grantee repository address of a grantor.', parameters_description:['address']},
195
- */
196
- {module:MODULES.payment, query_name:'Sender', query_id:1200, parameters:[], return:ValueType.TYPE_ADDRESS, description:'Payment originator address.', },
197
- {module:MODULES.payment, query_name:'Total Amount', query_id:1201, parameters:[], return:ValueType.TYPE_U128, description:"Payment amount.", },
198
- {module:MODULES.payment, query_name:'Remark', query_id:1202, parameters:[], return:ValueType.TYPE_STRING, description:'Payment remark.', parameters_description:['address']},
199
- {module:MODULES.payment, query_name:'Has Guard for Perpose', query_id:1203, parameters:[], return:ValueType.TYPE_BOOL, description:'Whether the payment references a Guard?', },
200
- {module:MODULES.payment, query_name:'Has Object for Perpose', query_id:1204, parameters:[], return:ValueType.TYPE_BOOL, description:'Whether the payment references an Object?', },
201
- {module:MODULES.payment, query_name:'Guard for Perpose', query_id:1205, parameters:[], return:ValueType.TYPE_ADDRESS, description:'The Guard referenced by this payment.', },
202
- {module:MODULES.payment, query_name:'Object for Perpose', query_id:1206, parameters:[], return:ValueType.TYPE_ADDRESS, description:"The Object referenced by this payment.", },
203
- {module:MODULES.payment, query_name:'Number of Recipients', query_id:1207, parameters:[], return:ValueType.TYPE_U64, description:'Number of recipients to receive payment from.', },
204
- {module:MODULES.payment, query_name:'Is a Recipient', query_id:1208, parameters:[ValueType.TYPE_ADDRESS], return:ValueType.TYPE_BOOL, description:'Is a recipient received the payment?', parameters_description:['address']},
205
- {module:MODULES.payment, query_name:'Amount for a Recipient', query_id:1209, parameters:[ValueType.TYPE_ADDRESS], return:ValueType.TYPE_U64, description:'The amount of payment received by an address.', parameters_description:['address']},
206
- {module:MODULES.payment, query_name:'Time', query_id:1210, parameters:[], return:ValueType.TYPE_U64, description:'Payment time', },
207
- {module:MODULES.payment, query_name:'Is from Treasury', query_id:1211, parameters:[], return:ValueType.TYPE_BOOL, description:'Whether the payment comes from a Treasury?', },
208
- {module:MODULES.payment, query_name:'Treasury Address', query_id:1212, parameters:[], return:ValueType.TYPE_ADDRESS, description:'The Treasury from which the payment comes.', },
209
- {module:MODULES.payment, query_name:'Biz-ID', query_id:1213, parameters:[], return:ValueType.TYPE_U64, description:'Bisiness ID number of the payment.', },
210
- {module:MODULES.payment, query_name:'Check the purpose of payment', query_id:1214, parameters:[ValueType.TYPE_ADDRESS, ValueType.TYPE_ADDRESS, ValueType.TYPE_U64], return:ValueType.TYPE_BOOL, description:'Do Guard, Object Perpose, and Biz-ID match?', parameters_description:['guard address', 'object address', 'Biz-ID']},
211
- {module:MODULES.payment, query_name:'Check & Amount for a Recipient', query_id:1215, parameters:[ValueType.TYPE_ADDRESS, ValueType.TYPE_ADDRESS, ValueType.TYPE_U64, ValueType.TYPE_ADDRESS], return:ValueType.TYPE_U128, description:'Check and get the amount of payment received by an address.', parameters_description:['guard address', 'object address', 'Biz-ID', 'recipient address']},
212
- {module:MODULES.payment, query_name:'Type', query_id:1216, parameters:[], return:ValueType.TYPE_STRING, description:'The type name(eg. contains "2::sui::SUI")', parameters_description:[]},
213
- {module:MODULES.payment, query_name:'Type with Original Ids', query_id:1217, parameters:[], return:ValueType.TYPE_STRING, description:'The type name(eg. contains "2::sui::SUI") with original ids', parameters_description:[]},
214
-
215
- {module:MODULES.treasury, query_name:'Permission', query_id:1400, parameters:[], return:ValueType.TYPE_ADDRESS, description:'Permission object address.', },
216
- {module:MODULES.treasury, query_name:'Balance', query_id:1401, parameters:[], return:ValueType.TYPE_U64, description:"Treasury balance.", },
217
- {module:MODULES.treasury, query_name:'Number of Flow Records', query_id:1402, parameters:[], return:ValueType.TYPE_U64, description:'Number of treasury transactions.', },
218
- {module:MODULES.treasury, query_name:'Inflow Amount', query_id:1403, parameters:[], return:ValueType.TYPE_U128, description:'Treasury inflow amount.', },
219
- {module:MODULES.treasury, query_name:'Outflow Amount', query_id:1404, parameters:[], return:ValueType.TYPE_U128, description:'Treasury outflow amount.', },
220
- {module:MODULES.treasury, query_name:'Has Deposit Guard', query_id:1405, parameters:[], return:ValueType.TYPE_BOOL, description:'Whether the deposit Guard set?', },
221
- {module:MODULES.treasury, query_name:'Deposit Guard', query_id:1406, parameters:[], return:ValueType.TYPE_ADDRESS, description:'Deposit Guard address.', },
222
- {module:MODULES.treasury, query_name:'Number of Withdraw Guards', query_id:1407, parameters:[], return:ValueType.TYPE_U64, description:'Number of withdraw guards.', },
223
- {module:MODULES.treasury, query_name:'Has Withdraw Guard', query_id:1408, parameters:[ValueType.TYPE_ADDRESS], return:ValueType.TYPE_BOOL, description:'Has a Withdraw Guard added?', parameters_description:['guard address']},
224
- {module:MODULES.treasury, query_name:'Withdrawal Amount with Guard', query_id:1409, parameters:[ValueType.TYPE_ADDRESS], return:ValueType.TYPE_U64, description:'withdrawal amount corresponding the Guard.', parameters_description:['guard address']},
225
- {module:MODULES.treasury, query_name:'Recent Time with Operation', query_id:1410, parameters:[ValueType.TYPE_U8], return:ValueType.TYPE_U64, description:'Time of the most recent fund operation.', parameters_description:['operation']},
226
- {module:MODULES.treasury, query_name:'Recent Signer with Operation', query_id:1411, parameters:[ValueType.TYPE_U8], return:ValueType.TYPE_ADDRESS, description:'Signer address of the most recent fund operation.', parameters_description:['operation']},
227
- {module:MODULES.treasury, query_name:'Recent Payment with Operation', query_id:1412, parameters:[ValueType.TYPE_U8], return:ValueType.TYPE_ADDRESS, description:'Payment address of the most recent fund operation.', parameters_description:['operation']},
228
- {module:MODULES.treasury, query_name:'Recent Amount with Operation', query_id:1413, parameters:[ValueType.TYPE_U8], return:ValueType.TYPE_U64, description:'Amount of the most recent fund operation.', parameters_description:['operation']},
229
- {module:MODULES.treasury, query_name:'Recent Time with Op/Pmt', query_id:1414, parameters:[ValueType.TYPE_U8, ValueType.TYPE_ADDRESS], return:ValueType.TYPE_U64, description:'Time of the most recent fund operation with payment specified.', parameters_description:['operation', 'payment address']},
230
- {module:MODULES.treasury, query_name:'Recent Signer with Op&Pmt', query_id:1415, parameters:[ValueType.TYPE_U8, ValueType.TYPE_ADDRESS], return:ValueType.TYPE_ADDRESS, description:'Signer of the most recent fund operationwith payment specified.', parameters_description:['operation', 'payment address']},
231
- {module:MODULES.treasury, query_name:'Recent Amount with Op/Pmt', query_id:1416, parameters:[ValueType.TYPE_U8, ValueType.TYPE_ADDRESS], return:ValueType.TYPE_U64, description:'Amount of the most recent fund operation with payment specified.', parameters_description:['operation', 'payment address']},
232
- {module:MODULES.treasury, query_name:'Recent Time with Op/Sgr', query_id:1417, parameters:[ValueType.TYPE_U8, ValueType.TYPE_ADDRESS], return:ValueType.TYPE_U64, description:'Time of the most recent fund operation with signer specified.', parameters_description:['operation', 'signer address']},
233
- {module:MODULES.treasury, query_name:'Recent Payment with Op/Sgr', query_id:1418, parameters:[ValueType.TYPE_U8, ValueType.TYPE_ADDRESS], return:ValueType.TYPE_ADDRESS, description:'Payment of the most recent fund operation with singner specified.', parameters_description:['operation', 'signer address']},
234
- {module:MODULES.treasury, query_name:'Recent Amount with Op/Sgr', query_id:1419, parameters:[ValueType.TYPE_U8, ValueType.TYPE_ADDRESS], return:ValueType.TYPE_U64, description:'Amount of the most recent fund operation with singer specified.', parameters_description:['operation', 'signer address']},
235
- {module:MODULES.treasury, query_name:'Recent Time with Op/Pmt/Sgr', query_id:1420, parameters:[ValueType.TYPE_U8, ValueType.TYPE_ADDRESS, ValueType.TYPE_ADDRESS], return:ValueType.TYPE_U64, description:'Time of the most recent fund operation.', parameters_description:['operation', 'payment address', 'singer address']},
236
- {module:MODULES.treasury, query_name:'Recent Amount with Op/Pmt/Sgr', query_id:1421, parameters:[ValueType.TYPE_U8, ValueType.TYPE_ADDRESS, ValueType.TYPE_ADDRESS], return:ValueType.TYPE_U64, description:'Amount of the most recent fund operation.', parameters_description:['operation', 'payment address', 'singer address']},
237
- {module:MODULES.treasury, query_name:'Has Operation', query_id:1422, parameters:[ValueType.TYPE_U8], return:ValueType.TYPE_BOOL, description:'Whether there was a fund operation?', parameters_description:['operation']},
238
- {module:MODULES.treasury, query_name:'Has Operation with Pmt', query_id:1423, parameters:[ValueType.TYPE_U8, ValueType.TYPE_ADDRESS], return:ValueType.TYPE_BOOL, description:'Whether there was a fund operation with payment specified?', parameters_description:['operation', 'payment address']},
239
- {module:MODULES.treasury, query_name:'Has Operation with Sgr', query_id:1424, parameters:[ValueType.TYPE_U8, ValueType.TYPE_ADDRESS], return:ValueType.TYPE_BOOL, description:'Whether there was a fund operation with singer specified?', parameters_description:['operation', 'singer address']},
240
- {module:MODULES.treasury, query_name:'Has Operation with Pmt/Sgr', query_id:1425, parameters:[ValueType.TYPE_U8, ValueType.TYPE_ADDRESS, ValueType.TYPE_ADDRESS], return:ValueType.TYPE_BOOL, description:'Whether there was a fund operation?', parameters_description:['operation', 'payment address', 'singer address']},
241
- {module:MODULES.treasury, query_name:'Operation at Least Times', query_id:1426, parameters:[ValueType.TYPE_U8, ValueType.TYPE_U8], return:ValueType.TYPE_BOOL, description:'Does it operate at least a certain number of times?', parameters_description:['operation', 'at least times']},
242
- {module:MODULES.treasury, query_name:'Operation at Least Times by a Signer', query_id:1427, parameters:[ValueType.TYPE_U8, ValueType.TYPE_ADDRESS, ValueType.TYPE_U8], return:ValueType.TYPE_BOOL, description:'Does it operate at least a certain number of times by a signer?', parameters_description:['operation', 'signer address', 'at least times']},
243
- {module:MODULES.treasury, query_name:'Type', query_id:1428, parameters:[], return:ValueType.TYPE_STRING, description:'The type name(eg. contains "2::sui::SUI")', parameters_description:[]},
244
- {module:MODULES.treasury, query_name:'Type with Original Ids', query_id:1429, parameters:[], return:ValueType.TYPE_STRING, description:'The type name(eg. contains "2::sui::SUI") with original ids', parameters_description:[]},
245
-
246
- {module:MODULES.arbitration, query_name:'Permission', query_id:1500, parameters:[], return:ValueType.TYPE_ADDRESS, description:'Permission object address.', },
247
- {module:MODULES.arbitration, query_name:'Paused', query_id:1501, parameters:[], return:ValueType.TYPE_BOOL, description:"Is it allowed to create Arb?", },
248
- {module:MODULES.arbitration, query_name:'Fee', query_id:1502, parameters:[], return:ValueType.TYPE_U64, description:'Cost of arbitration.', },
249
- {module:MODULES.arbitration, query_name:'Has Endpoint', query_id:1503, parameters:[], return:ValueType.TYPE_BOOL, description:'Is the endpoint set?', },
250
- {module:MODULES.arbitration, query_name:'Endpoint', query_id:1504, parameters:[], return:ValueType.TYPE_STRING, description:'Endpoint url/ipfs.', },
251
- {module:MODULES.arbitration, query_name:'Has Customer Guard', query_id:1505, parameters:[], return:ValueType.TYPE_BOOL, description:'Is there Guard set to apply for arbitration?', },
252
- {module:MODULES.arbitration, query_name:'Customer Guard', query_id:1506, parameters:[], return:ValueType.TYPE_ADDRESS, description:'Guard to apply for arbitration.', },
253
- {module:MODULES.arbitration, query_name:'Number of Voting Guard', query_id:1507, parameters:[], return:ValueType.TYPE_U64, description:'Number of voting guards.', },
254
- {module:MODULES.arbitration, query_name:'Has Voting Guard', query_id:1508, parameters:[ValueType.TYPE_ADDRESS], return:ValueType.TYPE_BOOL, description:'Has the voting Guard added?', parameters_description:['guard address']},
255
- {module:MODULES.arbitration, query_name:'Voting Weight', query_id:1509, parameters:[ValueType.TYPE_ADDRESS], return:ValueType.TYPE_U64, description:'Voting weight of the voting Guard.', parameters_description:['guard address']},
256
- {module:MODULES.arbitration, query_name:'Treasury', query_id:1510, parameters:[], return:ValueType.TYPE_ADDRESS, description:'The address of the Treasury where fees was collected at the time of withdrawal.', },
257
- {module:MODULES.arbitration, query_name:'Type', query_id:1511, parameters:[], return:ValueType.TYPE_STRING, description:'The type name(eg. contains "2::sui::SUI")', parameters_description:[]},
258
- {module:MODULES.arbitration, query_name:'Type with Original Ids', query_id:1512, parameters:[], return:ValueType.TYPE_STRING, description:'The type name(eg. contains "2::sui::SUI") with original ids', parameters_description:[]},
259
- {module:MODULES.arbitration, query_name:'Location', query_id:1513, parameters:[], return:ValueType.TYPE_STRING, description:'location or coordinate address', parameters_description:[]},
260
-
261
- {module:MODULES.arb, query_name:'Order', query_id:1600, parameters:[], return:ValueType.TYPE_ADDRESS, description:'Order under arbitration.', },
262
- {module:MODULES.arb, query_name:'Arbitration', query_id:1601, parameters:[], return:ValueType.TYPE_ADDRESS, description:"Arbitration object address.", },
263
- {module:MODULES.arb, query_name:'Feedback', query_id:1602, parameters:[], return:ValueType.TYPE_STRING, description:'Arbitration feedback.', },
264
- {module:MODULES.arb, query_name:'Has Compensation', query_id:1603, parameters:[], return:ValueType.TYPE_BOOL, description:'Whether there is an arbitration result?', },
265
- {module:MODULES.arb, query_name:'Compensation', query_id:1604, parameters:[], return:ValueType.TYPE_U64, description:'Compensation should be given to the order payer.', },
266
- {module:MODULES.arb, query_name:'Unclaimed Arbitration Costs', query_id:1605, parameters:[], return:ValueType.TYPE_U64, description:'Unclaimed arbitration costs.', },
267
- {module:MODULES.arb, query_name:'Turnout', query_id:1606, parameters:[], return:ValueType.TYPE_U64, description:'The number of addresses have voted.', },
268
- {module:MODULES.arb, query_name:'Has voted', query_id:1607, parameters:[ValueType.TYPE_ADDRESS], return:ValueType.TYPE_BOOL, description:'Has someone voted?', parameters_description:['voter address']},
269
- {module:MODULES.arb, query_name:'Voting weight', query_id:1608, parameters:[ValueType.TYPE_ADDRESS], return:ValueType.TYPE_U64, description:'The weight of a complete vote for the address.', parameters_description:['voter address']},
270
- {module:MODULES.arb, query_name:'Voting Time', query_id:1609, parameters:[ValueType.TYPE_ADDRESS], return:ValueType.TYPE_U64, description:'The time of a complete vote for the address.', parameters_description:['voter address']},
271
- {module:MODULES.arb, query_name:'Voting Option', query_id:1610, parameters:[ValueType.TYPE_ADDRESS, ValueType.TYPE_U8], return:ValueType.TYPE_BOOL, description:'Does an address complete voting for the option?', parameters_description:['voter address', 'option index']},
272
- {module:MODULES.arb, query_name:'Number of Options', query_id:1611, parameters:[], return:ValueType.TYPE_U64, description:'Number of voting options.', },
273
- {module:MODULES.arb, query_name:'Number of Votes', query_id:1612, parameters:[ValueType.TYPE_U8], return:ValueType.TYPE_U64, description:'The number of votes received for an option.', parameters_description:['option index']},
274
- {module:MODULES.arb, query_name:'Type', query_id:1613, parameters:[], return:ValueType.TYPE_STRING, description:'The type name(eg. contains "2::sui::SUI")', parameters_description:[]},
275
- {module:MODULES.arb, query_name:'Type with Original Ids', query_id:1614, parameters:[], return:ValueType.TYPE_STRING, description:'The type name(eg. contains "2::sui::SUI") with original ids', parameters_description:[]},
276
- ];
277
-
278
- export enum FunctionGroup {
279
- txn = 'Txn Functions',
280
- number = 'Number Crunching',
281
- logic = 'Compare or Logic',
282
- string = 'String Functions',
283
- }
284
-
285
- export const GuardFunctions : Guard_Options[] = [
286
- {from:'type', name:'Txn Signer', value:ContextType.TYPE_SIGNER, group:FunctionGroup.txn, return:ValueType.TYPE_ADDRESS},
287
- {from:'type', name:'Txn Time', value:ContextType.TYPE_CLOCK, group:FunctionGroup.txn, return:ValueType.TYPE_U64},
288
- {from:'type', name:'Guard Address', value:ContextType.TYPE_GUARD, group:FunctionGroup.txn, return:ValueType.TYPE_ADDRESS},
289
- {from:'type', name:'PositiveNumber to Address', value:OperatorType.TYPE_NUMBER_ADDRESS, group:FunctionGroup.number, return:ValueType.TYPE_ADDRESS},
290
- {from:'type', name:'Convert the string to lowercase', value:OperatorType.TYPE_STRING_LOWERCASE, group:FunctionGroup.string, return:ValueType.TYPE_STRING},
291
- {from:'type', name:'PositiveNumber Add (+)', value:OperatorType.TYPE_NUMBER_ADD, group:FunctionGroup.number, return:'number'},
292
- {from:'type', name:'PositiveNumber Subtract (-)', value:OperatorType.TYPE_NUMBER_SUBTRACT, group:FunctionGroup.number, return:'number'},
293
- {from:'type', name:'PositiveNumber Multiply (*)', value:OperatorType.TYPE_NUMBER_MULTIPLY, group:FunctionGroup.number, return:'number'},
294
- {from:'type', name:'PositiveNumber Devide (/)', value:OperatorType.TYPE_NUMBER_DEVIDE, group:FunctionGroup.number, return:'number'},
295
- {from:'type', name:'PositiveNumber Mod (%)', value:OperatorType.TYPE_NUMBER_MOD, group:FunctionGroup.number, return:'number'},
296
- ]
297
-
298
- export class Guard {
299
- static MAX_INPUT_LENGTH = 10240;
300
- // static MAX_PAYLOADS_LENGTH = 4096;
301
-
302
- protected txb;
303
- protected object : TxbObject;
304
- get_object() { return this.object }
305
-
306
- static From(txb:TransactionBlock, object:TxbObject) : Guard {
307
- let d = new Guard(txb)
308
- d.object = Protocol.TXB_OBJECT(txb, object)
309
- return d
310
- }
311
-
312
- private constructor(txb:TransactionBlock) {
313
- this.txb = txb;
314
- this.object = '';
315
- }
316
-
317
- static New(txb:TransactionBlock, description:string, maker:GuardMaker) : Guard {
318
- if (!maker.IsReady()) {
319
- ERROR(Errors.InvalidParam, 'launch maker');
320
- }
321
-
322
- if (!IsValidDesription(description)) {
323
- ERROR(Errors.IsValidDesription)
324
- }
325
- let bcs_input = maker.get_input()[0];
326
- let constants = maker.get_constant();
327
- if (bcs_input.length == 0 || bcs_input.length > Guard.MAX_INPUT_LENGTH) {
328
- ERROR(Errors.InvalidParam, 'launch input')
329
- }
330
-
331
- constants?.forEach((v, k) => {
332
- if (!GuardMaker.IsValidIndentifier(k)) ERROR(Errors.IsValidIndentifier, 'Guard.New.constants.identifier')
333
- if (v.value && v.bWitness) ERROR(Errors.InvalidParam, 'Guard.New.constants.value & bWiteness')
334
- if (v.value === undefined && !v.bWitness) ERROR(Errors.InvalidParam, 'Guard.New.constants.value')
335
- })
336
-
337
- let input = new Uint8Array(bcs_input); // copy new uint8array to reserve!
338
-
339
- // reserve the bytes for guard
340
- let g = new Guard(txb);
341
- g.object = txb.moveCall({
342
- target: Protocol.Instance().guardFn('new') as FnCallType,
343
- arguments: [txb.pure.string(description), txb.pure.vector('u8', [].slice.call(input.reverse()))],
344
- });
345
-
346
- constants?.forEach((v, k) => {
347
- if (v.bWitness) {
348
- const n = new Uint8Array(1); n.set([v.type], 0);
349
- txb.moveCall({
350
- target:Protocol.Instance().guardFn("constant_add") as FnCallType,
351
- arguments:[Protocol.TXB_OBJECT(txb, g.object), txb.pure.u8(k), txb.pure.bool(true), txb.pure.vector('u8', [].slice.call(n)), txb.pure.bool(true)]
352
- })
353
- } else {
354
- const n = insertAtHead(v.value!, v.type);
355
- txb.moveCall({
356
- target:Protocol.Instance().guardFn("constant_add") as FnCallType,
357
- arguments:[Protocol.TXB_OBJECT(txb, g.object), txb.pure.u8(k), txb.pure.bool(false), txb.pure.vector('u8', [].slice.call(n)), txb.pure.bool(true)]
358
- })
359
- }
360
- });
361
- return g
362
- }
363
-
364
- launch() : GuardAddress {
365
- return this.txb.moveCall({
366
- target:Protocol.Instance().guardFn("create") as FnCallType,
367
- arguments:[Protocol.TXB_OBJECT(this.txb, this.object)]
368
- });
369
- }
370
-
371
- static everyone_guard(txb:TransactionBlock) : GuardAddress {
372
- return txb.moveCall({
373
- target: Protocol.Instance().guardFn('everyone_guard') as FnCallType,
374
- arguments: []
375
- });
376
- }
377
-
378
- static QueryAddressIdentifiers(guard:GuardObject, onQueryAnswer:OnQueryAnswer, sender:string) {
379
- const txb = new TransactionBlock();
380
- txb.moveCall({
381
- target: Protocol.Instance().guardFn('query_address_identifiers') as FnCallType,
382
- arguments: [Protocol.TXB_OBJECT(txb, guard)]
383
- })
384
-
385
- Protocol.Client().devInspectTransactionBlock({sender:sender, transactionBlock:txb}).then((res) => {
386
- if (res.results && res.results[0]?.returnValues && res.results[0]?.returnValues?.length !== 1 ) {
387
- onQueryAnswer({err:'not match', txb:txb, identifiers:[]});
388
- return
389
- }
390
- const identifiers = bcs.vector(bcs.u8()).parse(Uint8Array.from((res.results as any)[0].returnValues[0][0]));
391
- onQueryAnswer({identifiers:identifiers, txb:txb});
392
- }).catch((e) => {
393
- console.log(e);
394
- onQueryAnswer({err:e, txb:txb, identifiers:[]});
395
- })
396
- }
397
-
398
-
399
- static BoolCmd:GuardQuery[] = GUARD_QUERIES.filter(q => q.return === ValueType.TYPE_BOOL);
400
- static IsBoolCmd = (cmd:number) : boolean => { return Guard.BoolCmd.some((q:GuardQuery) => {return q.query_id == cmd}) };
401
- static CmdFilter = (retType:ValueType) => { return GUARD_QUERIES.filter((q)=> q.return === retType)};
402
- static GetCmd = (cmd:number | undefined) : GuardQuery | undefined => {
403
- return GUARD_QUERIES.find((q) => {return q.query_id == cmd}) ;
404
- }
405
- static GetCmdOption = (cmd:number) : Guard_Options | undefined => {
406
- const r = Guard.GetCmd(cmd);
407
- if (!r) return r;
408
- return {from:'query', name:r.query_name, value:r.query_id, group:FirstLetterUppercase(r.module), return:r.return}
409
- }
410
-
411
- static GetInputParams = (cmd:number) : ValueType[] => {
412
- const r = Guard.GetCmd(cmd);
413
- if (!r) return [];
414
- return r.parameters;
415
- }
416
- static GetModuleName = (cmd:number) : string => {
417
- let r = Guard.GetCmd(cmd);
418
- if (!r) return '';
419
- return FirstLetterUppercase(r.module)
420
- }
421
- static NumberOptions = () : Guard_Options[] => {
422
- const r: Guard_Options[] = [...Guard.CmdFilter(ValueType.TYPE_U8), ...Guard.CmdFilter(ValueType.TYPE_U64),
423
- ...Guard.CmdFilter(ValueType.TYPE_U128), ...Guard.CmdFilter(ValueType.TYPE_U256)].map((v)=> {
424
- return {from:'query', name:v.query_name, value:v.query_id, group:FirstLetterUppercase(v.module), return:v.return}});
425
- return r.concat(GuardFunctions.filter(v=>v.return==='number' || v.return === ValueType.TYPE_U8
426
- || v.return === ValueType.TYPE_U64 || v.return === ValueType.TYPE_U128 || v.return === ValueType.TYPE_U256));
427
- }
428
-
429
- static Signer:Guard_Options = GuardFunctions.find(v => v.name==='Txn Signer' && v.value===ContextType.TYPE_SIGNER)!;
430
- static Time:Guard_Options = GuardFunctions.find(v => v.name==='Txn Time' && v.value===ContextType.TYPE_CLOCK)!;
431
- static Guard:Guard_Options = GuardFunctions.find(v => v.name==='Guard Address' && v.value===ContextType.TYPE_GUARD)!;
432
-
433
- static Logics = () :Guard_Options[] => LogicsInfo.map((v) => { return {from:'type', name:v[1] as string, value:v[0] as number, group:FunctionGroup.logic, return:ValueType.TYPE_BOOL}});
434
- //@deprecated. Crunchings: Ambiguous semantics
435
- static Crunchings: Guard_Options[] = GuardFunctions.filter(v => v.value === OperatorType.TYPE_NUMBER_ADD ||
436
- v.value === OperatorType.TYPE_NUMBER_SUBTRACT || v.value === OperatorType.TYPE_NUMBER_MULTIPLY ||
437
- v.value === OperatorType.TYPE_NUMBER_DEVIDE || v.value === OperatorType.TYPE_NUMBER_MOD || v.value === OperatorType.TYPE_NUMBER_ADDRESS
438
- ) ;
439
-
440
- static CommonOptions = (retType:ValueType) : Guard_Options[] => {
441
- return Guard.CmdFilter(retType).map((v)=> {return {from:'query', name:v.query_name, value:v.query_id, group:FirstLetterUppercase(v.module), return:v.return}});
442
- }
443
-
444
- static AllOptions = () : Guard_Options[] => {
445
- var r:Guard_Options[] = GUARD_QUERIES.map((v)=>{return {from:'query', name:v.query_name, value:v.query_id, group:FirstLetterUppercase(v.module), return:v.return}});
446
- return [...r, ...GuardFunctions, ...Guard.Logics()]
447
- }
448
-
449
- static StringOptions = () : Guard_Options[] => {
450
- const q:Guard_Options[] = Guard.CmdFilter(ValueType.TYPE_STRING).map((v) => {
451
- return {from:'query', name:v.query_name, value:v.query_id, group:FirstLetterUppercase(v.module), return:v.return};
452
- })
453
- return [...q, ...GuardFunctions.filter(v => v.return === ValueType.TYPE_STRING)];
454
- }
455
- static BoolOptions = () : Guard_Options[] => {
456
- const n1:Guard_Options[] = Guard.BoolCmd.map((v)=> { return {from:'query', name:v.query_name, value:v.query_id, group:FirstLetterUppercase(v.module), return:v.return}});
457
- return [...n1, ...Guard.Logics()];
458
- }
459
- static AddressOptions = () : Guard_Options[] => {
460
- const n1:Guard_Options[] = GUARD_QUERIES.filter(q => q.return === ValueType.TYPE_ADDRESS).map((v)=> { return {from:'query', name:v.query_name, value:v.query_id, group:FirstLetterUppercase(v.module), return:v.return}});
461
- return [...n1, ...GuardFunctions.filter(v=>v.return===ValueType.TYPE_ADDRESS)]
462
- }
463
-
464
- static Options = (ret_type: ValueType | 'number' | 'any') : Guard_Options[] => {
465
- if (ret_type === 'number') {
466
- return Guard.NumberOptions();
467
- } else if (ret_type === 'any') {
468
- return Guard.AllOptions();
469
- }
470
-
471
- switch(ret_type as number) {
472
- case ValueType.TYPE_BOOL:
473
- return Guard.BoolOptions();
474
- case ValueType.TYPE_STRING:
475
- return Guard.StringOptions();
476
- }
477
- return Guard.CommonOptions(ret_type);
478
- }
479
- }
480
-
481
- export const IsValidGuardIdentifier = (identifier:number | undefined) : boolean => {
482
- return IsValidU8(identifier) && identifier !== 0;
483
- }
484
- export class GuardMaker {
485
- protected data : Uint8Array[] = [];
486
- protected type_validator : Data_Type[] = [];
487
- protected constant : GuardConstant = new Map<number, Guard_Variable>();
488
-
489
- private static _witness_index: number = 1;
490
- private static _const_index: number = 255;
491
- private static GetWitnessIndex() {
492
- if (this._witness_index >= this._const_index) {
493
- ERROR(Errors.Fail, 'too many witness')
494
- }
495
- return GuardMaker._witness_index++
496
- }
497
- private static getConstIndex() {
498
- if (this._const_index <= this._witness_index) {
499
- ERROR(Errors.Fail, 'too many const')
500
- }
501
- return GuardMaker._const_index--
502
- }
503
- static IsValidIndentifier = (identifier:number) : boolean => {
504
- if (!IsValidU8(identifier) || identifier < 1) return false;
505
- return true
506
- }
507
- constructor() { }
508
-
509
- // undefined value means witness
510
- add_constant(type:ValueType, value?:any, identifier?:number, bNeedSerialize=true) : number {
511
- if (identifier === undefined) {
512
- if (value === undefined) identifier = GuardMaker.GetWitnessIndex();
513
- else identifier = GuardMaker.getConstIndex();
514
- }
515
- let v = this.constant.get(identifier);
516
- if (!v) {
517
- if (bNeedSerialize && value !== undefined) {
518
- value = Bcs.getInstance().ser(type, value);
519
- }
520
- this.constant.set(identifier, {type:type, value:value===undefined ? undefined:value, bWitness:value===undefined ? true:false});
521
- }
522
- return identifier
523
- }
524
-
525
- // serialize const & data, WITNESS use constants only.
526
- add_param(type:ValueType | ContextType, param?:any) : GuardMaker {
527
- switch(type) {
528
- case ValueType.TYPE_ADDRESS:
529
- case ValueType.TYPE_BOOL:
530
- case ValueType.TYPE_U8:
531
- case ValueType.TYPE_U64:
532
- case ValueType.TYPE_U128:
533
- case ValueType.TYPE_U256:
534
- case ValueType.TYPE_VEC_ADDRESS:
535
- case ValueType.TYPE_VEC_BOOL:
536
- case ValueType.TYPE_VEC_U128:
537
- case ValueType.TYPE_VEC_U64:
538
- case ValueType.TYPE_VEC_VEC_U8:
539
- case ValueType.TYPE_OPTION_U64:
540
- case ValueType.TYPE_OPTION_ADDRESS:
541
- case ValueType.TYPE_OPTION_BOOL:
542
- case ValueType.TYPE_OPTION_U128:
543
- case ValueType.TYPE_OPTION_U256:
544
- case ValueType.TYPE_OPTION_U8:
545
- case ValueType.TYPE_VEC_U256:
546
- this.data.push(Bcs.getInstance().ser(ValueType.TYPE_U8, type));
547
- this.data.push(Bcs.getInstance().ser(type as number, param));
548
- this.type_validator.push(type);
549
- break;
550
- case ValueType.TYPE_STRING:
551
- case ValueType.TYPE_VEC_U8:
552
- if (!param) ERROR(Errors.InvalidParam, 'param: ' + type);
553
- this.data.push(Bcs.getInstance().ser(ValueType.TYPE_U8, type));
554
- if (typeof(param) == 'string') {
555
- this.data.push(Bcs.getInstance().ser(ValueType.TYPE_STRING, param));
556
- } else {
557
- this.data.push(Bcs.getInstance().ser(ValueType.TYPE_VEC_U8, param));
558
- }
559
- this.type_validator.push(type);
560
- break;
561
- case ContextType.TYPE_SIGNER:
562
- this.data.push(Bcs.getInstance().ser(ValueType.TYPE_U8, type));
563
- this.type_validator.push(ValueType.TYPE_ADDRESS);
564
- break;
565
- case ContextType.TYPE_GUARD:
566
- this.data.push(Bcs.getInstance().ser(ValueType.TYPE_U8, type));
567
- this.type_validator.push(ValueType.TYPE_ADDRESS);
568
- break;
569
- case ContextType.TYPE_CLOCK:
570
- this.data.push(Bcs.getInstance().ser(ValueType.TYPE_U8, type));
571
- this.type_validator.push(ValueType.TYPE_U64);
572
- break;
573
- case ContextType.TYPE_CONSTANT:
574
- if (!IsValidGuardIdentifier(param)) {
575
- ERROR(Errors.IsValidGuardIdentifier, 'add_param param:'+type);
576
- }
577
-
578
- var v = this.constant.get(param);
579
- if (!v) ERROR(Errors.Fail, 'identifier not in constant:'+param);
580
- this.type_validator.push(v!.type); //@ type validator convert
581
- this.data.push(Bcs.getInstance().ser(ValueType.TYPE_U8, type)); // constant flag
582
- this.data.push(Bcs.getInstance().ser(ValueType.TYPE_U8, param)); // identifier
583
- break;
584
- default:
585
- ERROR(Errors.InvalidParam, 'add_param type:'+type);
586
- };
587
- return this;
588
- }
589
-
590
- add_query(module:MODULES, query_name:string, object_address_from:string | number) : GuardMaker {
591
- const query = GUARD_QUERIES.filter((q) => {
592
- return q.module == module && q.query_name == query_name
593
- })
594
- if (query.length !== 1) {
595
- ERROR(Errors.InvalidParam, 'add_query2:'+query_name);
596
- }
597
- return this.add_query2(query[0].query_id, object_address_from)
598
- }
599
-
600
- // object_address_from: string for static address; number as identifier inconstant
601
- add_query2(query_id:number, object_address_from:string | number) : GuardMaker {
602
- const query_index = GUARD_QUERIES.findIndex((q) => {
603
- return q.query_id == query_id
604
- })
605
- if (query_index == -1) {
606
- ERROR(Errors.InvalidParam, 'query_id:'+query_id);
607
- }
608
-
609
- if (typeof(object_address_from) == 'number' ) {
610
- if (!GuardMaker.IsValidIndentifier(object_address_from)) {
611
- ERROR(Errors.InvalidParam, 'object_address_from:'+query_id);
612
- }
613
- } else {
614
- if (!IsValidAddress(object_address_from)) {
615
- ERROR(Errors.InvalidParam, 'object_address_from:'+query_id);
616
- }
617
- }
618
-
619
- let offset = this.type_validator.length - GUARD_QUERIES[query_index].parameters.length;
620
- if (offset < 0) {
621
- ERROR(Errors.InvalidParam, 'offset:'+query_id);
622
- }
623
-
624
- let types = this.type_validator.slice(offset);
625
- if (!array_equal(types, GUARD_QUERIES[query_index].parameters)) { // type validate
626
- ERROR(Errors.Fail, 'array_equal:'+query_id);
627
- }
628
-
629
- this.data.push(Bcs.getInstance().ser(ValueType.TYPE_U8, OperatorType.TYPE_QUERY)); // QUERY TYPE
630
- if (typeof(object_address_from) == 'string') {
631
- this.data.push(Bcs.getInstance().ser(ValueType.TYPE_U8, ValueType.TYPE_ADDRESS));
632
- this.data.push(Bcs.getInstance().ser(ValueType.TYPE_ADDRESS, object_address_from)); // object address
633
- } else {
634
- let v = this.constant.get(object_address_from);
635
- if (!v) ERROR(Errors.Fail, 'object_address_from not in constant:'+query_id);
636
- if (v?.type == ValueType.TYPE_ADDRESS) {
637
- this.data.push(Bcs.getInstance().ser(ValueType.TYPE_U8, ContextType.TYPE_CONSTANT));
638
- this.data.push(Bcs.getInstance().ser(ValueType.TYPE_U8, object_address_from)); // object identifer in constants
639
- } else {
640
- ERROR(Errors.Fail, 'type bWitness not match:'+query_id)
641
- }
642
- }
643
-
644
- this.data.push(bcs.u16().serialize(GUARD_QUERIES[query_index].query_id).toBytes()); // cmd(u16)
645
- this.type_validator.splice(offset, GUARD_QUERIES[query_index].parameters.length); // delete type stack
646
- this.type_validator.push(GUARD_QUERIES[query_index].return); // add the return value type to type stack
647
- return this;
648
- }
649
-
650
- add_logic(type:OperatorType, logic_count:number=2) : GuardMaker {
651
- var e:any = LogicsInfo.find((v:any) => v[0] === type);
652
- if (e) { e=e[1] }
653
-
654
- let splice_len = 2; let cur:any;
655
- let ret = ValueType.TYPE_BOOL;
656
- switch (type) {
657
- case OperatorType.TYPE_LOGIC_AS_U256_GREATER:
658
- case OperatorType.TYPE_LOGIC_AS_U256_GREATER_EQUAL:
659
- case OperatorType.TYPE_LOGIC_AS_U256_LESSER:
660
- case OperatorType.TYPE_LOGIC_AS_U256_LESSER_EQUAL:
661
- case OperatorType.TYPE_LOGIC_AS_U256_EQUAL:
662
- if (!logic_count || logic_count < 2) ERROR(Errors.Fail, 'logic param invalid:'+e);
663
- splice_len = logic_count!;
664
- if (this.type_validator.length < splice_len) { ERROR(Errors.Fail, 'type_validator.length:'+e) }
665
- for (let i = 1; i <= splice_len; ++i) {
666
- if (!GuardMaker.match_u256(this.type_validator[this.type_validator.length - i])) { ERROR(Errors.Fail, 'type_validator check:'+e) }
667
- }
668
- break;
669
- case OperatorType.TYPE_LOGIC_EQUAL:
670
- if (!logic_count || logic_count < 2) ERROR(Errors.Fail, 'logic param invalid:'+e);
671
- splice_len = logic_count!;
672
- if (this.type_validator.length < splice_len) { ERROR(Errors.Fail, 'type_validator.length:'+e) }
673
- cur = this.type_validator[this.type_validator.length - 1];
674
- for (let i = 2; i <= splice_len; ++i) {
675
- if (this.type_validator[this.type_validator.length - i] !== cur) ERROR(Errors.Fail, 'type_validator check:' + e) ;
676
- }
677
- break;
678
- case OperatorType.TYPE_LOGIC_HAS_SUBSTRING:
679
- if (!logic_count || logic_count < 2) ERROR(Errors.Fail, 'logic param invalid:'+e);
680
- splice_len = logic_count!;
681
- if (this.type_validator.length < splice_len) { ERROR(Errors.Fail, 'type_validator.length:'+e) }
682
- for (let i = 1; i <= splice_len; ++i) {
683
- if (this.type_validator[this.type_validator.length - i] !== ValueType.TYPE_STRING) ERROR(Errors.Fail, 'type_validator check:' + e) ;
684
- }
685
- break;
686
- case OperatorType.TYPE_LOGIC_NOT:
687
- splice_len = 1;
688
- if (this.type_validator.length < splice_len) { ERROR(Errors.Fail, 'type_validator.length:'+e) }
689
- if (this.type_validator[this.type_validator.length -1] != ValueType.TYPE_BOOL) { ERROR(Errors.Fail, 'type_validator check:'+e) }
690
- break;
691
- case OperatorType.TYPE_NUMBER_ADDRESS:
692
- splice_len = 1; ret = ValueType.TYPE_ADDRESS;
693
- if (this.type_validator.length < splice_len) { ERROR(Errors.Fail, 'type_validator.length:'+e) }
694
- if (!GuardMaker.match_u256(this.type_validator[this.type_validator.length -1])) { ERROR(Errors.Fail, 'type_validator check:'+e) }
695
- break;
696
- case OperatorType.TYPE_STRING_LOWERCASE:
697
- splice_len = 1; ret = ValueType.TYPE_STRING;
698
- if (this.type_validator.length < splice_len) { ERROR(Errors.Fail, 'type_validator.length:'+e) }
699
- if (this.type_validator[this.type_validator.length -1] !== ValueType.TYPE_STRING) { ERROR(Errors.Fail, 'type_validator check:'+e) }
700
- break;
701
- case OperatorType.TYPE_LOGIC_AND:
702
- case OperatorType.TYPE_LOGIC_OR: //@ logics count
703
- if (!logic_count || logic_count < 2) ERROR(Errors.Fail, 'logic param invalid:'+e);
704
- splice_len = logic_count!;
705
- if (this.type_validator.length < splice_len) { ERROR(Errors.Fail, 'type_validator.length:'+e) }
706
- for (let i = 1; i <= splice_len; ++i) {
707
- if (this.type_validator[this.type_validator.length -i] != ValueType.TYPE_BOOL) { ERROR(Errors.Fail, 'type_validator check:'+e) }
708
- }
709
- break;
710
- case OperatorType.TYPE_NUMBER_ADD:
711
- case OperatorType.TYPE_NUMBER_DEVIDE:
712
- case OperatorType.TYPE_NUMBER_MULTIPLY:
713
- case OperatorType.TYPE_NUMBER_SUBTRACT:
714
- case OperatorType.TYPE_NUMBER_MOD:
715
- if (!logic_count || logic_count < 2) ERROR(Errors.Fail, 'logic param invalid:'+e);
716
- splice_len = logic_count!;
717
- if (this.type_validator.length < splice_len) { ERROR(Errors.Fail, 'type_validator.length:'+e) }
718
- for (let i = 1; i <= splice_len; ++i) {
719
- if(!GuardMaker.match_u256(this.type_validator[this.type_validator.length -1])) { ERROR(Errors.Fail, 'type_validator check:'+e) }
720
- }
721
- ret = ValueType.TYPE_U256;
722
- break;
723
- default:
724
- ERROR(Errors.InvalidParam, 'add_logic type invalid:' + e)
725
- }
726
-
727
- this.data.push(Bcs.getInstance().ser(ValueType.TYPE_U8, type)); // TYPE
728
- if (GuardMaker.is_multi_input_op(type)) {
729
- this.data.push((Bcs.getInstance().ser(ValueType.TYPE_U8, logic_count))); //@ logics
730
- }
731
- this.type_validator.splice(this.type_validator.length - splice_len); // delete type stack
732
- this.type_validator.push(ret); // add bool to type stack
733
- return this;
734
- }
735
-
736
- hasIdentifier(id:number) : boolean {
737
- return this.constant.has(id)
738
- }
739
-
740
- build(bNot = false) : GuardMaker {
741
- //console.log(this.type_validator);
742
- //this.data.forEach((value:Uint8Array) => console.log(value));
743
- if (this.type_validator.length != 1 || this.type_validator[0] != ValueType.TYPE_BOOL) {
744
- ERROR(Errors.Fail, 'type_validator check')
745
- } // ERROR
746
- if (bNot) {
747
- this.add_logic(OperatorType.TYPE_LOGIC_NOT);
748
- }
749
- this.data.push(concatenate(Uint8Array, ...this.data) as Uint8Array);
750
- this.data.splice(0, this.data.length-1);
751
- return this;
752
- }
753
-
754
- IsReady() : boolean {
755
- return this.type_validator.length == 1 && this.type_validator[0] == ValueType.TYPE_BOOL && this.data.length == 1;
756
- }
757
-
758
- combine(otherBuilt:GuardMaker, bAnd:boolean = true, bCombinConstant=false) : GuardMaker {
759
- if (!otherBuilt.IsReady() || !this.IsReady()) { ERROR(Errors.Fail, 'both should built yet')};
760
- let maker = new GuardMaker();
761
- this.constant.forEach((v, k) => {
762
- maker.constant.set(k, {type:v.type, value:v.value, bWitness:v.bWitness});
763
- })
764
- otherBuilt.constant.forEach((v, k) => {
765
- if (maker.constant.has(k) && !bCombinConstant) {
766
- ERROR(Errors.Fail, 'constant identifier exist');
767
- }
768
- maker.constant.set(k, {type:v.type, value:v.value, bWitness:v.bWitness});
769
- })
770
- let op = bAnd ? OperatorType.TYPE_LOGIC_AND : OperatorType.TYPE_LOGIC_OR;
771
- maker.data.push(concatenate(Uint8Array, ...this.data, ...otherBuilt.data, Bcs.getInstance().ser(ValueType.TYPE_U8, op), Bcs.getInstance().ser(ValueType.TYPE_U8, 2)));
772
- this.data.splice(0, this.data.length-1);
773
- maker.type_validator = this.type_validator;
774
- return maker
775
- }
776
-
777
- get_constant() { return this.constant }
778
- get_input() { return this.data }
779
-
780
- // and/or + logics count
781
- static input_combine(input1:Uint8Array, input2:Uint8Array, bAnd:boolean = true) : Uint8Array {
782
- let op = bAnd ? OperatorType.TYPE_LOGIC_AND : OperatorType.TYPE_LOGIC_OR;
783
- return concatenate(Uint8Array, input1, input2, Bcs.getInstance().ser(ValueType.TYPE_U8, op), Bcs.getInstance().ser(ValueType.TYPE_U8, 2), ) as Uint8Array;
784
- }
785
- static input_not(input:Uint8Array) : Uint8Array {
786
- return concatenate(Uint8Array, input, Bcs.getInstance().ser(ValueType.TYPE_U8, OperatorType.TYPE_LOGIC_NOT)) as Uint8Array;
787
- }
788
-
789
- static match_u256(type:number) : boolean {
790
- return (type == ValueType.TYPE_U8 || type == ValueType.TYPE_U64 || type == ValueType.TYPE_U128 || type == ValueType.TYPE_U256);
791
- }
792
- static is_multi_input_op(type:number) : boolean {
793
- return (type === OperatorType.TYPE_LOGIC_AS_U256_GREATER ||
794
- type === OperatorType.TYPE_LOGIC_AS_U256_GREATER_EQUAL ||
795
- type === OperatorType.TYPE_LOGIC_AS_U256_LESSER ||
796
- type === OperatorType.TYPE_LOGIC_AS_U256_LESSER ||
797
- type === OperatorType.TYPE_LOGIC_AS_U256_LESSER_EQUAL ||
798
- type === OperatorType.TYPE_LOGIC_AS_U256_EQUAL ||
799
- type === OperatorType.TYPE_LOGIC_EQUAL ||
800
- type === OperatorType.TYPE_LOGIC_HAS_SUBSTRING ||
801
- type === OperatorType.TYPE_LOGIC_AND ||
802
- type === OperatorType.TYPE_LOGIC_OR ||
803
- type === OperatorType.TYPE_NUMBER_ADD ||
804
- type === OperatorType.TYPE_NUMBER_DEVIDE ||
805
- type === OperatorType.TYPE_NUMBER_MULTIPLY ||
806
- type === OperatorType.TYPE_NUMBER_SUBTRACT ||
807
- type === OperatorType.TYPE_NUMBER_MOD)
808
- }
809
- }
810
-