wowok_agent 0.1.13 → 0.1.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.
- package/README.md +17 -0
- package/dist/124.index.js +1 -0
- package/dist/account.d.ts +38 -0
- package/dist/account.d.ts.map +1 -0
- package/dist/account.js +273 -0
- package/dist/agent/empty.d.ts +1 -0
- package/dist/agent/empty.d.ts.map +1 -0
- package/dist/agent/src/account.d.ts +38 -0
- package/dist/agent/src/account.d.ts.map +1 -0
- package/dist/agent/src/cache.d.ts +46 -0
- package/dist/agent/src/cache.d.ts.map +1 -0
- package/dist/agent/src/call/arbitration.d.ts +63 -0
- package/dist/agent/src/call/arbitration.d.ts.map +1 -0
- package/dist/agent/src/call/base.d.ts +34 -0
- package/dist/agent/src/call/base.d.ts.map +1 -0
- package/dist/agent/src/call/demand.d.ts +55 -0
- package/dist/agent/src/call/demand.d.ts.map +1 -0
- package/dist/agent/src/call/guard.d.ts +44 -0
- package/dist/agent/src/call/guard.d.ts.map +1 -0
- package/dist/agent/src/call/machine.d.ts +109 -0
- package/dist/agent/src/call/machine.d.ts.map +1 -0
- package/dist/agent/src/call/object_permission.d.ts +13 -0
- package/dist/agent/src/call/object_permission.d.ts.map +1 -0
- package/dist/agent/src/call/permission.d.ts +47 -0
- package/dist/agent/src/call/permission.d.ts.map +1 -0
- package/dist/agent/src/call/personal.d.ts +43 -0
- package/dist/agent/src/call/personal.d.ts.map +1 -0
- package/dist/agent/src/call/repository.d.ts +53 -0
- package/dist/agent/src/call/repository.d.ts.map +1 -0
- package/dist/agent/src/call/service.d.ts +134 -0
- package/dist/agent/src/call/service.d.ts.map +1 -0
- package/dist/agent/src/call/treasury.d.ts +53 -0
- package/dist/agent/src/call/treasury.d.ts.map +1 -0
- package/dist/agent/src/call.d.ts +24 -0
- package/dist/agent/src/call.d.ts.map +1 -0
- package/dist/agent/src/events.d.ts +65 -0
- package/dist/agent/src/events.d.ts.map +1 -0
- package/dist/agent/src/index.d.ts +19 -0
- package/dist/agent/src/index.d.ts.map +1 -0
- package/dist/agent/src/objects.d.ts +308 -0
- package/dist/agent/src/objects.d.ts.map +1 -0
- package/dist/agent/src/permission.d.ts +12 -0
- package/dist/agent/src/permission.d.ts.map +1 -0
- package/dist/agent/src/private_info.d.ts +26 -0
- package/dist/agent/src/private_info.d.ts.map +1 -0
- package/dist/cache.d.ts +46 -0
- package/dist/cache.d.ts.map +1 -0
- package/dist/cache.js +59 -0
- package/dist/call/arbitration.d.ts +63 -0
- package/dist/call/arbitration.d.ts.map +1 -0
- package/dist/call/arbitration.js +182 -0
- package/dist/call/base.d.ts +34 -0
- package/dist/call/base.d.ts.map +1 -0
- package/dist/call/base.js +131 -0
- package/dist/call/demand.d.ts +55 -0
- package/dist/call/demand.d.ts.map +1 -0
- package/dist/call/demand.js +135 -0
- package/dist/call/guard.d.ts +44 -0
- package/dist/call/guard.d.ts.map +1 -0
- package/dist/call/guard.js +244 -0
- package/dist/call/machine.d.ts +109 -0
- package/dist/call/machine.d.ts.map +1 -0
- package/dist/call/machine.js +210 -0
- package/dist/call/object_permission.d.ts +13 -0
- package/dist/call/object_permission.d.ts.map +1 -0
- package/dist/call/object_permission.js +49 -0
- package/dist/call/permission.d.ts +47 -0
- package/dist/call/permission.d.ts.map +1 -0
- package/dist/call/permission.js +95 -0
- package/dist/call/personal.d.ts +43 -0
- package/dist/call/personal.d.ts.map +1 -0
- package/dist/call/personal.js +60 -0
- package/dist/call/repository.d.ts +53 -0
- package/dist/call/repository.d.ts.map +1 -0
- package/dist/call/repository.js +125 -0
- package/dist/call/service.d.ts +134 -0
- package/dist/call/service.d.ts.map +1 -0
- package/dist/call/service.js +340 -0
- package/dist/call/treasury.d.ts +53 -0
- package/dist/call/treasury.d.ts.map +1 -0
- package/dist/call/treasury.js +161 -0
- package/dist/call.d.ts +24 -0
- package/dist/call.d.ts.map +1 -0
- package/dist/call.js +58 -0
- package/dist/empty.d.ts +1 -0
- package/dist/empty.d.ts.map +1 -0
- package/dist/empty.js +1 -0
- package/dist/events.d.ts +65 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +59 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1 -0
- package/dist/objects.d.ts +308 -0
- package/dist/objects.d.ts.map +1 -0
- package/dist/objects.js +448 -0
- package/dist/permission.d.ts +12 -0
- package/dist/permission.d.ts.map +1 -0
- package/dist/permission.js +40 -0
- package/dist/private_info.d.ts +26 -0
- package/dist/private_info.d.ts.map +1 -0
- package/dist/private_info.js +243 -0
- package/dist/src/account.d.ts +38 -0
- package/dist/src/account.d.ts.map +1 -0
- package/dist/src/account.js +273 -0
- package/dist/src/cache.d.ts +46 -0
- package/dist/src/cache.d.ts.map +1 -0
- package/dist/src/cache.js +59 -0
- package/dist/src/call/arbitration.d.ts +63 -0
- package/dist/src/call/arbitration.d.ts.map +1 -0
- package/dist/src/call/arbitration.js +182 -0
- package/dist/src/call/base.d.ts +34 -0
- package/dist/src/call/base.d.ts.map +1 -0
- package/dist/src/call/base.js +131 -0
- package/dist/src/call/demand.d.ts +55 -0
- package/dist/src/call/demand.d.ts.map +1 -0
- package/dist/src/call/demand.js +135 -0
- package/dist/src/call/guard.d.ts +44 -0
- package/dist/src/call/guard.d.ts.map +1 -0
- package/dist/src/call/guard.js +244 -0
- package/dist/src/call/machine.d.ts +109 -0
- package/dist/src/call/machine.d.ts.map +1 -0
- package/dist/src/call/machine.js +210 -0
- package/dist/src/call/object_permission.d.ts +13 -0
- package/dist/src/call/object_permission.d.ts.map +1 -0
- package/dist/src/call/object_permission.js +49 -0
- package/dist/src/call/permission.d.ts +47 -0
- package/dist/src/call/permission.d.ts.map +1 -0
- package/dist/src/call/permission.js +95 -0
- package/dist/src/call/personal.d.ts +43 -0
- package/dist/src/call/personal.d.ts.map +1 -0
- package/dist/src/call/personal.js +60 -0
- package/dist/src/call/repository.d.ts +53 -0
- package/dist/src/call/repository.d.ts.map +1 -0
- package/dist/src/call/repository.js +125 -0
- package/dist/src/call/service.d.ts +134 -0
- package/dist/src/call/service.d.ts.map +1 -0
- package/dist/src/call/service.js +340 -0
- package/dist/src/call/treasury.d.ts +53 -0
- package/dist/src/call/treasury.d.ts.map +1 -0
- package/dist/src/call/treasury.js +161 -0
- package/dist/src/call.d.ts +24 -0
- package/dist/src/call.d.ts.map +1 -0
- package/dist/src/call.js +58 -0
- package/dist/src/events.d.ts +65 -0
- package/dist/src/events.d.ts.map +1 -0
- package/dist/src/events.js +59 -0
- package/dist/src/index.d.ts +19 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +18 -0
- package/dist/src/objects.d.ts +308 -0
- package/dist/src/objects.d.ts.map +1 -0
- package/dist/src/objects.js +448 -0
- package/dist/src/permission.d.ts +12 -0
- package/dist/src/permission.d.ts.map +1 -0
- package/dist/src/permission.js +40 -0
- package/dist/src/private_info.d.ts +26 -0
- package/dist/src/private_info.d.ts.map +1 -0
- package/dist/src/private_info.js +243 -0
- package/dist/webpack.config.d.ts +2 -0
- package/dist/webpack.config.d.ts.map +1 -0
- package/dist/webpack.config.js +17 -0
- package/dist/wowok/src/arbitration.d.ts +63 -0
- package/dist/wowok/src/arbitration.d.ts.map +1 -0
- package/dist/wowok/src/demand.d.ts +26 -0
- package/dist/wowok/src/demand.d.ts.map +1 -0
- package/dist/wowok/src/entity.d.ts +27 -0
- package/dist/wowok/src/entity.d.ts.map +1 -0
- package/dist/wowok/src/exception.d.ts +31 -0
- package/dist/wowok/src/exception.d.ts.map +1 -0
- package/dist/wowok/src/guard.d.ts +79 -0
- package/dist/wowok/src/guard.d.ts.map +1 -0
- package/dist/wowok/src/index.d.ts +35 -0
- package/dist/wowok/src/index.d.ts.map +1 -0
- package/dist/wowok/src/machine.d.ts +67 -0
- package/dist/wowok/src/machine.d.ts.map +1 -0
- package/dist/wowok/src/passport.d.ts +86 -0
- package/dist/wowok/src/passport.d.ts.map +1 -0
- package/dist/wowok/src/payment.d.ts +16 -0
- package/dist/wowok/src/payment.d.ts.map +1 -0
- package/dist/wowok/src/permission.d.ts +150 -0
- package/dist/wowok/src/permission.d.ts.map +1 -0
- package/dist/wowok/src/progress.d.ts +72 -0
- package/dist/wowok/src/progress.d.ts.map +1 -0
- package/dist/wowok/src/protocol.d.ts +226 -0
- package/dist/wowok/src/protocol.d.ts.map +1 -0
- package/dist/wowok/src/repository.d.ts +83 -0
- package/dist/wowok/src/repository.d.ts.map +1 -0
- package/dist/wowok/src/resource.d.ts +35 -0
- package/dist/wowok/src/resource.d.ts.map +1 -0
- package/dist/wowok/src/service.d.ts +138 -0
- package/dist/wowok/src/service.d.ts.map +1 -0
- package/dist/wowok/src/treasury.d.ts +55 -0
- package/dist/wowok/src/treasury.d.ts.map +1 -0
- package/dist/wowok/src/utils.d.ts +93 -0
- package/dist/wowok/src/utils.d.ts.map +1 -0
- package/dist/wowok/src/wowok.d.ts +15 -0
- package/dist/wowok/src/wowok.d.ts.map +1 -0
- package/dist/wowok_agent/empty.d.ts +1 -0
- package/dist/wowok_agent/empty.d.ts.map +1 -0
- package/dist/wowok_agent/src/account.d.ts +38 -0
- package/dist/wowok_agent/src/account.d.ts.map +1 -0
- package/dist/wowok_agent/src/cache.d.ts +46 -0
- package/dist/wowok_agent/src/cache.d.ts.map +1 -0
- package/dist/wowok_agent/src/call/arbitration.d.ts +63 -0
- package/dist/wowok_agent/src/call/arbitration.d.ts.map +1 -0
- package/dist/wowok_agent/src/call/base.d.ts +34 -0
- package/dist/wowok_agent/src/call/base.d.ts.map +1 -0
- package/dist/wowok_agent/src/call/demand.d.ts +55 -0
- package/dist/wowok_agent/src/call/demand.d.ts.map +1 -0
- package/dist/wowok_agent/src/call/guard.d.ts +44 -0
- package/dist/wowok_agent/src/call/guard.d.ts.map +1 -0
- package/dist/wowok_agent/src/call/machine.d.ts +109 -0
- package/dist/wowok_agent/src/call/machine.d.ts.map +1 -0
- package/dist/wowok_agent/src/call/object_permission.d.ts +13 -0
- package/dist/wowok_agent/src/call/object_permission.d.ts.map +1 -0
- package/dist/wowok_agent/src/call/permission.d.ts +47 -0
- package/dist/wowok_agent/src/call/permission.d.ts.map +1 -0
- package/dist/wowok_agent/src/call/personal.d.ts +43 -0
- package/dist/wowok_agent/src/call/personal.d.ts.map +1 -0
- package/dist/wowok_agent/src/call/repository.d.ts +53 -0
- package/dist/wowok_agent/src/call/repository.d.ts.map +1 -0
- package/dist/wowok_agent/src/call/service.d.ts +134 -0
- package/dist/wowok_agent/src/call/service.d.ts.map +1 -0
- package/dist/wowok_agent/src/call/treasury.d.ts +53 -0
- package/dist/wowok_agent/src/call/treasury.d.ts.map +1 -0
- package/dist/wowok_agent/src/call.d.ts +24 -0
- package/dist/wowok_agent/src/call.d.ts.map +1 -0
- package/dist/wowok_agent/src/events.d.ts +65 -0
- package/dist/wowok_agent/src/events.d.ts.map +1 -0
- package/dist/wowok_agent/src/index.d.ts +19 -0
- package/dist/wowok_agent/src/index.d.ts.map +1 -0
- package/dist/wowok_agent/src/objects.d.ts +308 -0
- package/dist/wowok_agent/src/objects.d.ts.map +1 -0
- package/dist/wowok_agent/src/permission.d.ts +12 -0
- package/dist/wowok_agent/src/permission.d.ts.map +1 -0
- package/dist/wowok_agent/src/private_info.d.ts +26 -0
- package/dist/wowok_agent/src/private_info.d.ts.map +1 -0
- package/empty.ts +0 -0
- package/package.json +12 -3
- package/src/account.ts +40 -37
- package/src/call/arbitration.ts +41 -19
- package/src/call/base.ts +14 -16
- package/src/call/demand.ts +8 -7
- package/src/call/guard.ts +2 -7
- package/src/call/machine.ts +56 -35
- package/src/call/repository.ts +17 -15
- package/src/call/service.ts +87 -55
- package/src/call/treasury.ts +11 -10
- package/src/call.ts +3 -3
- package/src/index.ts +1 -1
- package/tsconfig.json +6 -2
- package/webpack.config.cjs +26 -0
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import { IsValidArgType, IsValidAddress, Errors, ERROR, Permission, PermissionIndex, Treasury, Arbitration, } from 'wowok';
|
|
2
|
+
import { query_objects, } from '../objects';
|
|
3
|
+
import { CallBase } from "./base";
|
|
4
|
+
export { BCS, getSuiMoveConfig, } from '@mysten/bcs';
|
|
5
|
+
export class CallArbitration extends CallBase {
|
|
6
|
+
data;
|
|
7
|
+
constructor(data) {
|
|
8
|
+
super();
|
|
9
|
+
this.data = data;
|
|
10
|
+
}
|
|
11
|
+
async call(account) {
|
|
12
|
+
if (!this.data?.type_parameter || !IsValidArgType(this.data.type_parameter)) {
|
|
13
|
+
ERROR(Errors.IsValidArgType, 'arbitration.type_parameter');
|
|
14
|
+
}
|
|
15
|
+
var checkOwner = false;
|
|
16
|
+
const guards = [];
|
|
17
|
+
const perms = [];
|
|
18
|
+
var obj;
|
|
19
|
+
const permission_address = this.data?.permission?.address;
|
|
20
|
+
const object_address = this.data?.object?.address;
|
|
21
|
+
const treasury_address = this.data?.fee_treasury?.address;
|
|
22
|
+
if (permission_address && IsValidAddress(permission_address)) {
|
|
23
|
+
if (!this.data?.object) {
|
|
24
|
+
perms.push(PermissionIndex.arbitration);
|
|
25
|
+
}
|
|
26
|
+
if (this.data?.description !== undefined && object_address) {
|
|
27
|
+
perms.push(PermissionIndex.arbitration_description);
|
|
28
|
+
}
|
|
29
|
+
if (this.data?.bPaused !== undefined) {
|
|
30
|
+
perms.push(PermissionIndex.arbitration_pause);
|
|
31
|
+
}
|
|
32
|
+
if (this.data?.endpoint == undefined) { // publish is an irreversible one-time operation
|
|
33
|
+
perms.push(PermissionIndex.arbitration_endpoint);
|
|
34
|
+
}
|
|
35
|
+
if (this.data?.fee !== undefined && object_address) {
|
|
36
|
+
perms.push(PermissionIndex.arbitration_fee);
|
|
37
|
+
}
|
|
38
|
+
if (treasury_address !== undefined && object_address) {
|
|
39
|
+
perms.push(PermissionIndex.arbitration_treasury);
|
|
40
|
+
}
|
|
41
|
+
if (this.data?.usage_guard !== undefined) {
|
|
42
|
+
perms.push(PermissionIndex.arbitration_guard);
|
|
43
|
+
}
|
|
44
|
+
if (this.data?.voting_guard !== undefined) {
|
|
45
|
+
perms.push(PermissionIndex.arbitration_voting_guard);
|
|
46
|
+
}
|
|
47
|
+
if (this.data?.arb_arbitration !== undefined) {
|
|
48
|
+
perms.push(PermissionIndex.arbitration_arbitration);
|
|
49
|
+
}
|
|
50
|
+
if (this.data?.arb_new?.guard !== undefined) {
|
|
51
|
+
if (IsValidAddress(this.data.arb_new.guard)) {
|
|
52
|
+
guards.push(this.data.arb_new.guard);
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
if (!object_address) { // new
|
|
56
|
+
if (this.data?.usage_guard && IsValidAddress(this.data?.usage_guard)) {
|
|
57
|
+
guards.push(this.data.usage_guard);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
if (!obj) {
|
|
62
|
+
const r = await query_objects({ objects: [object_address], showContent: true });
|
|
63
|
+
if (r?.objects && r.objects[0].type === 'Arbitration') {
|
|
64
|
+
obj = r.objects[0];
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
if (obj?.usage_guard) {
|
|
68
|
+
guards.push(obj.usage_guard);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
if (this.data?.arb_vote !== undefined) {
|
|
74
|
+
perms.push(PermissionIndex.treasury_receive);
|
|
75
|
+
}
|
|
76
|
+
if (typeof (this.data?.arb_vote?.voting_guard) === 'string' && IsValidAddress(this.data?.arb_vote?.voting_guard)) {
|
|
77
|
+
guards.push(this.data?.arb_vote?.voting_guard);
|
|
78
|
+
}
|
|
79
|
+
return await this.check_permission_and_call(permission_address, perms, guards, checkOwner, undefined, account);
|
|
80
|
+
}
|
|
81
|
+
return await this.exec(account);
|
|
82
|
+
}
|
|
83
|
+
async operate(txb, passport, account) {
|
|
84
|
+
let obj;
|
|
85
|
+
let permission;
|
|
86
|
+
let withdraw_treasury;
|
|
87
|
+
const permission_address = this.data?.permission?.address;
|
|
88
|
+
const object_address = this.data?.object?.address;
|
|
89
|
+
const treasury_address = this.data?.fee_treasury?.address;
|
|
90
|
+
if (!object_address) {
|
|
91
|
+
if (!permission_address || !IsValidAddress(permission_address)) {
|
|
92
|
+
const d = this.data?.permission?.description ?? '';
|
|
93
|
+
permission = Permission.New(txb, d);
|
|
94
|
+
}
|
|
95
|
+
if (!treasury_address || !IsValidAddress(treasury_address)) {
|
|
96
|
+
const d = this.data?.fee_treasury?.description ?? '';
|
|
97
|
+
withdraw_treasury = Treasury.New(txb, this.data?.type_parameter, permission ? permission.get_object() : permission_address, d, permission ? undefined : passport);
|
|
98
|
+
}
|
|
99
|
+
obj = Arbitration.New(txb, this.data.type_parameter, permission ? permission.get_object() : permission_address, this.data?.description ?? '', BigInt(this.data?.fee ?? 0), withdraw_treasury ? withdraw_treasury.get_object() : treasury_address, permission ? undefined : passport);
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
if (IsValidAddress(object_address) && this.data.type_parameter && permission_address) {
|
|
103
|
+
obj = Arbitration.From(txb, this.data.type_parameter, permission_address, object_address);
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
ERROR(Errors.InvalidParam, 'object or permission address invalid.');
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
if (obj) {
|
|
110
|
+
const pst = permission ? undefined : passport;
|
|
111
|
+
if (this.data?.description !== undefined && object_address) {
|
|
112
|
+
obj?.set_description(this.data.description, pst);
|
|
113
|
+
}
|
|
114
|
+
if (this.data?.endpoint !== undefined) {
|
|
115
|
+
obj?.set_endpoint(this.data.endpoint, pst);
|
|
116
|
+
}
|
|
117
|
+
if (this.data?.fee !== undefined && object_address) {
|
|
118
|
+
obj?.set_fee(BigInt(this.data.fee), pst);
|
|
119
|
+
}
|
|
120
|
+
if (treasury_address !== undefined && object_address) {
|
|
121
|
+
obj?.set_withdrawTreasury(treasury_address, pst);
|
|
122
|
+
}
|
|
123
|
+
var arb_new;
|
|
124
|
+
if (this.data?.arb_new !== undefined) {
|
|
125
|
+
arb_new = obj?.arb(this.data.arb_new.data, pst);
|
|
126
|
+
}
|
|
127
|
+
if (this.data?.arb_arbitration !== undefined) {
|
|
128
|
+
const a = this.data.arb_arbitration.arb ?? arb_new;
|
|
129
|
+
if (!a)
|
|
130
|
+
ERROR(Errors.Fail, 'arb invalid: arb_arbitration');
|
|
131
|
+
obj?.arbitration({ arb: a, feedback: this.data.arb_arbitration.feedback, indemnity: this.data.arb_arbitration.indemnity }, pst);
|
|
132
|
+
}
|
|
133
|
+
if (this.data?.arb_vote !== undefined) {
|
|
134
|
+
const a = this.data.arb_vote.arb ?? arb_new;
|
|
135
|
+
if (!a)
|
|
136
|
+
ERROR(Errors.Fail, 'arb invalid: arb_vote');
|
|
137
|
+
obj?.vote({ arb: a, voting_guard: this.data.arb_vote.voting_guard, agrees: this.data.arb_vote.agrees }, pst);
|
|
138
|
+
}
|
|
139
|
+
if (this.data?.arb_withdraw_fee !== undefined) {
|
|
140
|
+
const a = this.data.arb_withdraw_fee.arb ?? arb_new;
|
|
141
|
+
if (!a)
|
|
142
|
+
ERROR(Errors.Fail, 'arb invalid: arb_withdraw_fee');
|
|
143
|
+
obj?.withdraw_fee(a, this.data.arb_withdraw_fee.data, pst);
|
|
144
|
+
}
|
|
145
|
+
if (arb_new) {
|
|
146
|
+
await this.new_with_mark(txb, obj?.arb_launch(arb_new), this.data?.arb_new?.namedNew, account);
|
|
147
|
+
}
|
|
148
|
+
if (this.data?.voting_guard !== undefined) {
|
|
149
|
+
switch (this.data.voting_guard.op) {
|
|
150
|
+
case 'add':
|
|
151
|
+
obj?.add_voting_guard(this.data.voting_guard.data, pst);
|
|
152
|
+
break;
|
|
153
|
+
case 'remove':
|
|
154
|
+
obj?.remove_voting_guard(this.data.voting_guard.guards, false, pst);
|
|
155
|
+
break;
|
|
156
|
+
case 'set':
|
|
157
|
+
obj?.remove_voting_guard([], true, pst);
|
|
158
|
+
obj?.add_voting_guard(this.data.voting_guard.data, pst);
|
|
159
|
+
break;
|
|
160
|
+
case 'removeall':
|
|
161
|
+
obj?.remove_voting_guard([], true, pst);
|
|
162
|
+
break;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
if (this.data.usage_guard !== undefined) {
|
|
166
|
+
obj?.set_guard(this.data.usage_guard, pst);
|
|
167
|
+
}
|
|
168
|
+
if (this.data?.bPaused !== undefined) {
|
|
169
|
+
obj?.pause(this.data.bPaused, pst);
|
|
170
|
+
}
|
|
171
|
+
if (withdraw_treasury) {
|
|
172
|
+
await this.new_with_mark(txb, withdraw_treasury.launch(), this.data?.fee_treasury?.namedNew, account);
|
|
173
|
+
}
|
|
174
|
+
if (permission) {
|
|
175
|
+
await this.new_with_mark(txb, permission.launch(), this.data?.permission?.namedNew, account);
|
|
176
|
+
}
|
|
177
|
+
if (!object_address) {
|
|
178
|
+
await this.new_with_mark(txb, obj.launch(), this.data?.object?.namedNew, account);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { TxbAddress, ResourceObject, PassportObject, PermissionIndexType, WitnessFill } from 'wowok';
|
|
2
|
+
import { ObjectBase } from '../objects';
|
|
3
|
+
import { Transaction as TransactionBlock } from '@mysten/sui/transactions';
|
|
4
|
+
import { type SuiTransactionBlockResponse as CallResponse } from '@mysten/sui/client';
|
|
5
|
+
export interface Namedbject {
|
|
6
|
+
name?: string;
|
|
7
|
+
tags?: string[];
|
|
8
|
+
}
|
|
9
|
+
export interface AddressMark {
|
|
10
|
+
address: TxbAddress;
|
|
11
|
+
name?: string;
|
|
12
|
+
tags: string[];
|
|
13
|
+
}
|
|
14
|
+
export interface ResponseData extends ObjectBase {
|
|
15
|
+
change: 'created' | 'mutated' | string;
|
|
16
|
+
}
|
|
17
|
+
export interface GuardInfo_forCall {
|
|
18
|
+
guard: string[];
|
|
19
|
+
witness: WitnessFill[];
|
|
20
|
+
}
|
|
21
|
+
export type CallResult = GuardInfo_forCall | CallResponse | undefined;
|
|
22
|
+
export declare function ResponseData(response: CallResponse | undefined): ResponseData[];
|
|
23
|
+
export declare class CallBase {
|
|
24
|
+
resouceObject: ResourceObject | undefined;
|
|
25
|
+
protected operate(txb: TransactionBlock, passport?: PassportObject, account?: string): Promise<void>;
|
|
26
|
+
constructor();
|
|
27
|
+
call(account?: string): Promise<CallResult>;
|
|
28
|
+
call_with_witness(info: GuardInfo_forCall, account?: string): Promise<CallResponse | undefined>;
|
|
29
|
+
protected check_permission_and_call(permission: string, permIndex: PermissionIndexType[], guards_needed: string[], checkOwner?: boolean, checkAdmin?: boolean, account?: string): Promise<CallResult>;
|
|
30
|
+
protected exec(account?: string): Promise<CallResponse>;
|
|
31
|
+
protected new_with_mark(txb: TransactionBlock, object: TxbAddress, named_new?: Namedbject, account?: string, innerTags?: string[]): Promise<void>;
|
|
32
|
+
protected sign_and_commit(txb: TransactionBlock, account?: string): Promise<CallResponse>;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/call/base.ts"],"names":[],"mappings":"AAEA,OAAO,EAA8B,UAAU,EAAyB,cAAc,EAAE,cAAc,EAClG,mBAAmB,EAAyB,WAAW,EAC1D,MAAM,OAAO,CAAC;AAGf,OAAO,EAAE,UAAU,EAAoC,MAAM,YAAY,CAAC;AAC1E,OAAO,EAAE,WAAW,IAAI,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EAAE,KAAK,2BAA2B,IAAI,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAGrF,MAAM,WAAW,UAAU;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IACxB,OAAO,EAAE,UAAU,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,EAAE,CAAC;CAClB;AACD,MAAM,WAAW,YAAa,SAAQ,UAAU;IAC5C,MAAM,EAAC,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;CACzC;AACD,MAAM,WAAW,iBAAiB;IAC9B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,WAAW,EAAE,CAAC;CAC1B;AAED,MAAM,MAAM,UAAU,GAAG,iBAAiB,GAAG,YAAY,GAAG,SAAS,CAAC;AAGtE,wBAAgB,YAAY,CAAC,QAAQ,EAAE,YAAY,GAAG,SAAS,GAAI,YAAY,EAAE,CAYhF;AAED,qBAAa,QAAQ;IAEjB,aAAa,EAAC,cAAc,GAAG,SAAS,CAAC;cACzB,OAAO,CAAC,GAAG,EAAC,gBAAgB,EAAE,QAAQ,CAAC,EAAC,cAAc,EAAE,OAAO,CAAC,EAAC,MAAM;;IAKjF,IAAI,CAAC,OAAO,CAAC,EAAC,MAAM,GAAI,OAAO,CAAC,UAAU,CAAC;IAC3C,iBAAiB,CAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAC,MAAM,GAAI,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;cAoBtF,yBAAyB,CAAE,UAAU,EAAC,MAAM,EAAE,SAAS,EAAE,mBAAmB,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,EACnH,UAAU,CAAC,EAAC,OAAO,EAAE,UAAU,CAAC,EAAC,OAAO,EAAE,OAAO,CAAC,EAAC,MAAM,GAAI,OAAO,CAAC,UAAU,CAAC;cA4CpE,IAAI,CAAE,OAAO,CAAC,EAAC,MAAM,GAAI,OAAO,CAAC,YAAY,CAAC;cAM9C,aAAa,CAAC,GAAG,EAAC,gBAAgB,EAAE,MAAM,EAAC,UAAU,EAAE,SAAS,CAAC,EAAC,UAAU,EAAE,OAAO,CAAC,EAAC,MAAM,EAAE,SAAS,GAAC,MAAM,EAAmB;cAqBlI,eAAe,CAAC,GAAG,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,MAAM,GAAI,OAAO,CAAC,YAAY,CAAC;CAenG"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { Protocol, Entity, Resource, array_unique, TagName, Errors, ERROR, Permission, GuardParser, Passport } from 'wowok';
|
|
2
|
+
import { query_permission } from '../permission';
|
|
3
|
+
import { Account } from '../account';
|
|
4
|
+
import { queryTableItem_Personal, raw2type } from '../objects';
|
|
5
|
+
import { Transaction as TransactionBlock } from '@mysten/sui/transactions';
|
|
6
|
+
export function ResponseData(response) {
|
|
7
|
+
const res = [];
|
|
8
|
+
response?.objectChanges?.forEach(v => {
|
|
9
|
+
const type_raw = v?.objectType;
|
|
10
|
+
const type = raw2type(type_raw);
|
|
11
|
+
if (type) {
|
|
12
|
+
res.push({ type: type, type_raw: type_raw, object: v?.objectId, version: v?.version,
|
|
13
|
+
owner: v?.owner, change: v.type });
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
return res;
|
|
17
|
+
}
|
|
18
|
+
export class CallBase {
|
|
19
|
+
// operation implementation for a call
|
|
20
|
+
resouceObject;
|
|
21
|
+
async operate(txb, passport, account) { }
|
|
22
|
+
;
|
|
23
|
+
constructor() { }
|
|
24
|
+
// return WitnessFill to resolve filling witness, and than 'call_with_witness' to complete the call;
|
|
25
|
+
// return ResponseData when the call has completed;
|
|
26
|
+
// throw an exception when errors.
|
|
27
|
+
async call(account) { return undefined; }
|
|
28
|
+
;
|
|
29
|
+
async call_with_witness(info, account) {
|
|
30
|
+
if (info.guard.length > 0) { // prepare passport
|
|
31
|
+
const p = await GuardParser.Create([...info.guard]);
|
|
32
|
+
if (p) {
|
|
33
|
+
const query = await p.done(info.witness);
|
|
34
|
+
if (query) {
|
|
35
|
+
const txb = new TransactionBlock();
|
|
36
|
+
const passport = new Passport(txb, query);
|
|
37
|
+
await this.operate(new TransactionBlock(), passport?.get_object(), account);
|
|
38
|
+
passport.destroy();
|
|
39
|
+
return await this.sign_and_commit(txb, account);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
ERROR(Errors.Fail, 'guard verify');
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
async check_permission_and_call(permission, permIndex, guards_needed, checkOwner, checkAdmin, account) {
|
|
48
|
+
var guards = [];
|
|
49
|
+
if (permIndex.length > 0 || checkOwner) {
|
|
50
|
+
const addr = await Account.Instance().get_address(account);
|
|
51
|
+
if (!addr)
|
|
52
|
+
ERROR(Errors.InvalidParam, 'check_permission_and_call: account invalid');
|
|
53
|
+
const p = await query_permission({ permission_object: permission, address: addr });
|
|
54
|
+
if (checkOwner && !p.owner)
|
|
55
|
+
ERROR(Errors.noPermission, 'owner');
|
|
56
|
+
if (checkAdmin && !p.admin)
|
|
57
|
+
ERROR(Errors.noPermission, 'admin');
|
|
58
|
+
permIndex.forEach(v => {
|
|
59
|
+
const r = Permission.HasPermission(p, v);
|
|
60
|
+
if (!r?.has)
|
|
61
|
+
ERROR(Errors.noPermission, v);
|
|
62
|
+
if (r?.guard)
|
|
63
|
+
guards.push(r.guard);
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
if (guards_needed.length > 0) {
|
|
67
|
+
guards = guards.concat(guards_needed);
|
|
68
|
+
}
|
|
69
|
+
if (guards.length > 0) { // prepare passport
|
|
70
|
+
const p = await GuardParser.Create([...guards]);
|
|
71
|
+
const futures = p ? p.future_fills() : [];
|
|
72
|
+
if (!p)
|
|
73
|
+
ERROR(Errors.Fail, 'guard parse');
|
|
74
|
+
if (p && futures.length === 0) {
|
|
75
|
+
const query = await p.done();
|
|
76
|
+
if (query) {
|
|
77
|
+
const txb = new TransactionBlock();
|
|
78
|
+
const passport = new Passport(txb, query);
|
|
79
|
+
await this.operate(new TransactionBlock(), passport?.get_object(), account);
|
|
80
|
+
passport.destroy();
|
|
81
|
+
return await this.sign_and_commit(txb, account);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return { guard: [...guards], witness: p.future_fills() };
|
|
85
|
+
}
|
|
86
|
+
else { // no passport needed
|
|
87
|
+
return await this.exec();
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
async exec(account) {
|
|
91
|
+
const txb = new TransactionBlock();
|
|
92
|
+
await this.operate(txb, undefined, account);
|
|
93
|
+
return await this.sign_and_commit(txb, account);
|
|
94
|
+
}
|
|
95
|
+
async new_with_mark(txb, object, named_new, account, innerTags = [TagName.Launch]) {
|
|
96
|
+
const tags = named_new?.tags ? array_unique([...named_new.tags, ...innerTags]) : array_unique([...innerTags]);
|
|
97
|
+
if (!this.resouceObject) {
|
|
98
|
+
const addr = await Account.Instance().get_address(account);
|
|
99
|
+
if (addr) {
|
|
100
|
+
const r = await queryTableItem_Personal({ address: addr }); //@ use cache
|
|
101
|
+
if (!r?.mark_object) {
|
|
102
|
+
this.resouceObject = Entity.From(txb).create_resource2(); // new
|
|
103
|
+
Resource.From(txb, this.resouceObject).add(object, tags, named_new?.name);
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
Resource.From(txb, r.mark_object).add(object, tags, named_new?.name);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
ERROR(Errors.InvalidParam, 'account - ' + account);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
Resource.From(txb, this.resouceObject).add(object, tags, named_new?.name);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
async sign_and_commit(txb, account) {
|
|
118
|
+
const pair = await Account.Instance().get_pair(account, true);
|
|
119
|
+
if (!pair)
|
|
120
|
+
ERROR(Errors.Fail, 'account invalid');
|
|
121
|
+
if (this.resouceObject) {
|
|
122
|
+
Resource.From(txb, this.resouceObject).launch(); //@ resource launch, if created.
|
|
123
|
+
this.resouceObject = undefined;
|
|
124
|
+
}
|
|
125
|
+
return await Protocol.Client().signAndExecuteTransaction({
|
|
126
|
+
transaction: txb,
|
|
127
|
+
signer: pair,
|
|
128
|
+
options: { showObjectChanges: true },
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { TransactionBlock } from 'wowok';
|
|
2
|
+
import { PassportObject } from 'wowok';
|
|
3
|
+
import { CallBase, CallResult, Namedbject } from "./base";
|
|
4
|
+
export interface CallDemand_Data {
|
|
5
|
+
type_parameter: string;
|
|
6
|
+
object?: {
|
|
7
|
+
address: string;
|
|
8
|
+
} | {
|
|
9
|
+
namedNew: Namedbject;
|
|
10
|
+
};
|
|
11
|
+
permission?: {
|
|
12
|
+
address: string;
|
|
13
|
+
} | {
|
|
14
|
+
namedNew: Namedbject;
|
|
15
|
+
description?: string;
|
|
16
|
+
};
|
|
17
|
+
description?: string;
|
|
18
|
+
time_expire?: {
|
|
19
|
+
op: 'duration';
|
|
20
|
+
minutes: number;
|
|
21
|
+
} | {
|
|
22
|
+
op: 'set';
|
|
23
|
+
time: number;
|
|
24
|
+
};
|
|
25
|
+
bounty?: {
|
|
26
|
+
op: 'add';
|
|
27
|
+
object: {
|
|
28
|
+
address: string;
|
|
29
|
+
} | {
|
|
30
|
+
balance: string | number;
|
|
31
|
+
};
|
|
32
|
+
} | {
|
|
33
|
+
op: 'reward';
|
|
34
|
+
service: string;
|
|
35
|
+
} | {
|
|
36
|
+
op: 'refund';
|
|
37
|
+
};
|
|
38
|
+
present?: {
|
|
39
|
+
service: string | number;
|
|
40
|
+
recommend_words: string;
|
|
41
|
+
service_pay_type: string;
|
|
42
|
+
guard?: string | 'fetch';
|
|
43
|
+
};
|
|
44
|
+
guard?: {
|
|
45
|
+
address: string;
|
|
46
|
+
service_id_in_guard?: number;
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
export declare class CallDemand extends CallBase {
|
|
50
|
+
data: CallDemand_Data;
|
|
51
|
+
constructor(data: CallDemand_Data);
|
|
52
|
+
call(account?: string): Promise<CallResult>;
|
|
53
|
+
protected operate(txb: TransactionBlock, passport?: PassportObject, account?: string): Promise<void>;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=demand.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"demand.d.ts","sourceRoot":"","sources":["../../src/call/demand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAA6D,MAAM,OAAO,CAAC;AACpG,OAAO,EAAE,cAAc,EACW,MAAM,OAAO,CAAC;AAEhD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAI1D,MAAM,WAAW,eAAe;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE;QAAC,OAAO,EAAC,MAAM,CAAA;KAAC,GAAG;QAAC,QAAQ,EAAE,UAAU,CAAA;KAAC,CAAC;IACnD,UAAU,CAAC,EAAE;QAAC,OAAO,EAAC,MAAM,CAAA;KAAC,GAAG;QAAC,QAAQ,EAAE,UAAU,CAAC;QAAC,WAAW,CAAC,EAAC,MAAM,CAAA;KAAC,CAAC;IAC5E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE;QAAC,EAAE,EAAE,UAAU,CAAC;QAAC,OAAO,EAAC,MAAM,CAAA;KAAC,GAAG;QAAC,EAAE,EAAC,KAAK,CAAC;QAAC,IAAI,EAAC,MAAM,CAAA;KAAC,CAAC;IACzE,MAAM,CAAC,EAAE;QAAC,EAAE,EAAC,KAAK,CAAC;QAAC,MAAM,EAAC;YAAC,OAAO,EAAC,MAAM,CAAA;SAAC,GAAC;YAAC,OAAO,EAAC,MAAM,GAAC,MAAM,CAAA;SAAC,CAAA;KAAC,GAAG;QAAC,EAAE,EAAC,QAAQ,CAAC;QAAC,OAAO,EAAC,MAAM,CAAA;KAAC,GAAG;QAAC,EAAE,EAAC,QAAQ,CAAA;KAAC,CAAE;IACtH,OAAO,CAAC,EAAE;QAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,eAAe,EAAC,MAAM,CAAC;QAAC,gBAAgB,EAAC,MAAM,CAAC;QAAC,KAAK,CAAC,EAAC,MAAM,GAAG,OAAO,CAAA;KAAC,CAAC;IAC/G,KAAK,CAAC,EAAE;QAAC,OAAO,EAAC,MAAM,CAAC;QAAC,mBAAmB,CAAC,EAAC,MAAM,CAAA;KAAC,CAAC;CACzD;AAED,qBAAa,UAAW,SAAQ,QAAQ;IACpC,IAAI,EAAE,eAAe,CAAC;gBACV,IAAI,EAAE,eAAe;IAI3B,IAAI,CAAC,OAAO,CAAC,EAAC,MAAM,GAAI,OAAO,CAAC,UAAU,CAAC;cAoDjC,OAAO,CAAC,GAAG,EAAC,gBAAgB,EAAE,QAAQ,CAAC,EAAC,cAAc,EAAE,OAAO,CAAC,EAAC,MAAM;CAoE1F"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { IsValidArgType, IsValidCoinType } from 'wowok';
|
|
2
|
+
import { IsValidAddress, Errors, ERROR, Permission, PermissionIndex, Demand, } from 'wowok';
|
|
3
|
+
import { query_objects } from '../objects';
|
|
4
|
+
import { CallBase } from "./base";
|
|
5
|
+
import { Account } from '../account';
|
|
6
|
+
export class CallDemand extends CallBase {
|
|
7
|
+
data;
|
|
8
|
+
constructor(data) {
|
|
9
|
+
super();
|
|
10
|
+
this.data = data;
|
|
11
|
+
}
|
|
12
|
+
async call(account) {
|
|
13
|
+
if (!this.data?.type_parameter || !IsValidArgType(this.data.type_parameter)) {
|
|
14
|
+
ERROR(Errors.IsValidArgType, 'demand.type_parameter');
|
|
15
|
+
}
|
|
16
|
+
var checkOwner = false;
|
|
17
|
+
const guards = [];
|
|
18
|
+
const perms = [];
|
|
19
|
+
const permission_address = this.data?.permission?.address;
|
|
20
|
+
const object_address = this.data?.object?.address;
|
|
21
|
+
if (permission_address && IsValidAddress(permission_address)) {
|
|
22
|
+
if (!this.data?.object) {
|
|
23
|
+
perms.push(PermissionIndex.demand);
|
|
24
|
+
}
|
|
25
|
+
if (this.data?.description !== undefined && object_address) {
|
|
26
|
+
perms.push(PermissionIndex.demand_description);
|
|
27
|
+
}
|
|
28
|
+
if (this.data?.time_expire !== undefined && object_address) {
|
|
29
|
+
perms.push(PermissionIndex.demand_expand_time);
|
|
30
|
+
}
|
|
31
|
+
if (this.data?.guard !== undefined) {
|
|
32
|
+
perms.push(PermissionIndex.demand_guard);
|
|
33
|
+
}
|
|
34
|
+
if (this.data?.bounty?.op === 'reward') {
|
|
35
|
+
perms.push(PermissionIndex.demand_yes);
|
|
36
|
+
}
|
|
37
|
+
if (this.data?.bounty?.op === 'refund') {
|
|
38
|
+
perms.push(PermissionIndex.demand_refund);
|
|
39
|
+
}
|
|
40
|
+
if (this.data?.present?.guard !== undefined) {
|
|
41
|
+
if (IsValidAddress(this.data.present.guard)) {
|
|
42
|
+
guards.push(this.data.present.guard);
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
if (!object_address) { // new
|
|
46
|
+
if (this.data?.guard?.address && IsValidAddress(this.data?.guard.address)) {
|
|
47
|
+
guards.push(this.data.guard.address);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
const r = await query_objects({ objects: [object_address], showContent: true });
|
|
52
|
+
if (r?.objects && r?.objects[0]?.type === 'Demand') {
|
|
53
|
+
const obj = r?.objects[0];
|
|
54
|
+
if (obj?.guard) {
|
|
55
|
+
guards.push(obj?.guard.object);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return await this.check_permission_and_call(permission_address, perms, guards, checkOwner, undefined, account);
|
|
62
|
+
}
|
|
63
|
+
return await this.exec(account);
|
|
64
|
+
}
|
|
65
|
+
async operate(txb, passport, account) {
|
|
66
|
+
let obj;
|
|
67
|
+
let permission;
|
|
68
|
+
const permission_address = this.data?.permission?.address;
|
|
69
|
+
const object_address = this.data?.object?.address;
|
|
70
|
+
if (!object_address) {
|
|
71
|
+
if (!permission_address || !IsValidAddress(permission_address)) {
|
|
72
|
+
const d = this.data?.permission?.description ?? '';
|
|
73
|
+
permission = Permission.New(txb, d);
|
|
74
|
+
}
|
|
75
|
+
if (this.data.time_expire !== undefined) {
|
|
76
|
+
obj = Demand.New(txb, this.data.type_parameter, this.data.time_expire?.op === 'duration' ? true : false, this.data.time_expire?.op === 'duration' ? this.data.time_expire.minutes : this.data.time_expire?.time, permission ? permission.get_object() : permission_address, this.data?.description ?? '', permission ? undefined : passport);
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
obj = Demand.New(txb, this.data.type_parameter, true, 30 * 24 * 60, // 30days default
|
|
80
|
+
permission ? permission.get_object() : permission_address, this.data?.description ?? '', permission ? undefined : passport);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
if (IsValidAddress(object_address) && this.data.type_parameter && this.data.permission && IsValidAddress(permission_address)) {
|
|
85
|
+
obj = Demand.From(txb, this.data.type_parameter, permission_address, object_address);
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
ERROR(Errors.InvalidParam, 'object or permission address invalid.');
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
if (obj) {
|
|
92
|
+
const pst = permission ? undefined : passport;
|
|
93
|
+
if (this.data?.description !== undefined && object_address) {
|
|
94
|
+
obj?.set_description(this.data.description, pst);
|
|
95
|
+
}
|
|
96
|
+
if (this.data?.time_expire !== undefined && object_address) {
|
|
97
|
+
obj?.expand_time(this.data.time_expire.op === 'duration' ? true : false, this.data.time_expire.op === 'duration' ? this.data.time_expire.minutes : this.data.time_expire.time, pst);
|
|
98
|
+
}
|
|
99
|
+
if (this.data?.bounty !== undefined) {
|
|
100
|
+
if (this.data.bounty.op === 'add') {
|
|
101
|
+
if (IsValidAddress(this.data.bounty.object?.address)) {
|
|
102
|
+
obj.deposit(this.data.bounty.object?.address);
|
|
103
|
+
}
|
|
104
|
+
else if (this.data.bounty.object?.balance !== undefined) {
|
|
105
|
+
if (!IsValidCoinType(this.data.type_parameter)) {
|
|
106
|
+
ERROR(Errors.IsValidCoinType, 'demand bounty');
|
|
107
|
+
}
|
|
108
|
+
const r = await Account.Instance().get_coin_object(txb, this.data.bounty.object?.balance, account, this.data.type_parameter);
|
|
109
|
+
if (r)
|
|
110
|
+
obj.deposit(r);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
else if (this.data.bounty.op === 'reward') {
|
|
114
|
+
obj?.yes(this.data.bounty.service, pst);
|
|
115
|
+
}
|
|
116
|
+
else if (this.data.bounty.op === 'refund') {
|
|
117
|
+
obj?.refund(pst);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
if (this.data?.present !== undefined) {
|
|
121
|
+
//@ demand guard and its pst, if set
|
|
122
|
+
obj?.present(this.data.present.service, this.data.present.service_pay_type, this.data.present.recommend_words, pst);
|
|
123
|
+
}
|
|
124
|
+
if (this.data?.guard !== undefined) {
|
|
125
|
+
obj?.set_guard(this.data.guard.address, this.data.guard?.service_id_in_guard ?? undefined, pst);
|
|
126
|
+
}
|
|
127
|
+
if (permission) {
|
|
128
|
+
await this.new_with_mark(txb, permission.launch(), this.data?.permission?.namedNew, account);
|
|
129
|
+
}
|
|
130
|
+
if (!this.data.object) {
|
|
131
|
+
await this.new_with_mark(txb, obj.launch(), this.data?.object?.namedNew, account);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* generate and launch a guard
|
|
3
|
+
*/
|
|
4
|
+
import { ContextType, OperatorType, ValueType, TransactionBlock, PassportObject } from "wowok";
|
|
5
|
+
import { CallBase, CallResult, Namedbject } from "./base";
|
|
6
|
+
export interface GuardConst {
|
|
7
|
+
identifier: number;
|
|
8
|
+
bWitness: boolean;
|
|
9
|
+
value_type: ValueType;
|
|
10
|
+
value?: any;
|
|
11
|
+
}
|
|
12
|
+
export type GuardNode = {
|
|
13
|
+
identifier: number;
|
|
14
|
+
} | {
|
|
15
|
+
query: number | string;
|
|
16
|
+
object: string | number;
|
|
17
|
+
parameters: GuardNode[];
|
|
18
|
+
} | {
|
|
19
|
+
logic: OperatorType.TYPE_LOGIC_AS_U256_GREATER | OperatorType.TYPE_LOGIC_AS_U256_GREATER_EQUAL | OperatorType.TYPE_LOGIC_AS_U256_LESSER | OperatorType.TYPE_LOGIC_AS_U256_LESSER_EQUAL | OperatorType.TYPE_LOGIC_AS_U256_EQUAL | OperatorType.TYPE_LOGIC_EQUAL | OperatorType.TYPE_LOGIC_HAS_SUBSTRING | OperatorType.TYPE_LOGIC_NOT | OperatorType.TYPE_LOGIC_AND | OperatorType.TYPE_LOGIC_OR;
|
|
20
|
+
parameters: GuardNode[];
|
|
21
|
+
} | {
|
|
22
|
+
calc: OperatorType.TYPE_NUMBER_ADD | OperatorType.TYPE_NUMBER_DEVIDE | OperatorType.TYPE_NUMBER_MOD | OperatorType.TYPE_NUMBER_MULTIPLY | OperatorType.TYPE_NUMBER_SUBTRACT;
|
|
23
|
+
parameters: GuardNode[];
|
|
24
|
+
} | {
|
|
25
|
+
value_type: ValueType;
|
|
26
|
+
value: any;
|
|
27
|
+
} | {
|
|
28
|
+
identifier: number;
|
|
29
|
+
} | {
|
|
30
|
+
context: ContextType.TYPE_CLOCK | ContextType.TYPE_GUARD | ContextType.TYPE_SIGNER;
|
|
31
|
+
};
|
|
32
|
+
export interface CallGuard_Data {
|
|
33
|
+
namedNew?: Namedbject;
|
|
34
|
+
description: string;
|
|
35
|
+
table?: GuardConst[];
|
|
36
|
+
root: GuardNode;
|
|
37
|
+
}
|
|
38
|
+
export declare class CallGuard extends CallBase {
|
|
39
|
+
data: CallGuard_Data;
|
|
40
|
+
constructor(data: CallGuard_Data);
|
|
41
|
+
call(account?: string): Promise<CallResult>;
|
|
42
|
+
protected operate(txb: TransactionBlock, passport?: PassportObject, account?: string): Promise<void>;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=guard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guard.d.ts","sourceRoot":"","sources":["../../src/call/guard.ts"],"names":[],"mappings":"AACA;;GAEG;AAEH,OAAO,EAAO,WAAW,EAA4B,YAAY,EAAE,SAAS,EAC3D,gBAAgB,EACV,cAAc,EACV,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAE1D,MAAM,WAAW,UAAU;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,SAAS,CAAC;IACtB,KAAK,CAAC,EAAE,GAAG,CAAC;CACf;AAGD,MAAM,MAAM,SAAS,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;CAAE,GACzC;IAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,UAAU,EAAE,SAAS,EAAE,CAAC;CAAC,GAC3E;IAAC,KAAK,EAAE,YAAY,CAAC,0BAA0B,GAAG,YAAY,CAAC,gCAAgC,GAC3F,YAAY,CAAC,yBAAyB,GAAG,YAAY,CAAC,+BAA+B,GACrF,YAAY,CAAC,wBAAwB,GAAG,YAAY,CAAC,gBAAgB,GAAG,YAAY,CAAC,wBAAwB,GAC7G,YAAY,CAAC,cAAc,GAAG,YAAY,CAAC,cAAc,GAAG,YAAY,CAAC,aAAa,CAAC;IAAE,UAAU,EAAE,SAAS,EAAE,CAAC;CAAC,GACtH;IAAC,IAAI,EAAE,YAAY,CAAC,eAAe,GAAG,YAAY,CAAC,kBAAkB,GAAG,YAAY,CAAC,eAAe,GAChG,YAAY,CAAC,oBAAoB,GAAG,YAAY,CAAC,oBAAoB,CAAC;IAAC,UAAU,EAAE,SAAS,EAAE,CAAC;CAAC,GACpG;IAAC,UAAU,EAAE,SAAS,CAAC;IAAC,KAAK,EAAC,GAAG,CAAC;CAAE,GACpC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAC,GACpB;IAAC,OAAO,EAAE,WAAW,CAAC,UAAU,GAAG,WAAW,CAAC,UAAU,GAAG,WAAW,CAAC,WAAW,CAAA;CAAE,CAAC;AAE5F,MAAM,WAAW,cAAc;IAC3B,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IACrB,IAAI,EAAE,SAAS,CAAC;CACnB;AACD,qBAAa,SAAU,SAAQ,QAAQ;IACnC,IAAI,EAAE,cAAc,CAAC;gBACT,IAAI,EAAE,cAAc;IAI1B,IAAI,CAAC,OAAO,CAAC,EAAC,MAAM,GAAI,OAAO,CAAC,UAAU,CAAC;cAIjC,OAAO,CAAC,GAAG,EAAC,gBAAgB,EAAE,QAAQ,CAAC,EAAC,cAAc,EAAE,OAAO,CAAC,EAAC,MAAM;CAiD1F"}
|