@wowok/agent-mcp 3.1.7 → 3.2.0
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/dist/config/exposure.d.ts +10 -10
- package/dist/config/judgment.d.ts +25 -25
- package/dist/config/rule-engine.d.ts +25 -25
- package/dist/customer/user-preferences.d.ts +2 -2
- package/dist/evaluation/arbitration-game.js +1 -1
- package/dist/evaluation/capability.d.ts +1 -1
- package/dist/evaluation/extract.js +1 -1
- package/dist/evaluation/match-operation.js +1 -1
- package/dist/extensions/industry-pack.d.ts +3 -2
- package/dist/extensions/industry-pack.js +1 -1
- package/dist/extensions/modes.js +1 -1
- package/dist/extensions/registry.js +1 -1
- package/dist/extensions/types.d.ts +1 -0
- package/dist/graph/onchain/analyze.js +1 -1
- package/dist/graph/onchain/analyze.spec.js +1 -1
- package/dist/graph/onchain/edge-schema.js +1 -1
- package/dist/graph/onchain/extract.js +1 -1
- package/dist/graph/onchain/field-manifest.js +1 -1
- package/dist/graph/onchain/project-relationship.js +1 -1
- package/dist/graph/onchain/types.d.ts +1 -1
- package/dist/harness/recover.js +1 -1
- package/dist/keeper/KeeperScan.d.ts +2 -1
- package/dist/keeper/KeeperScan.js +1 -1
- package/dist/keeper/detectors.d.ts +9 -0
- package/dist/keeper/detectors.js +1 -1
- package/dist/keeper/keeper.spec.js +1 -1
- package/dist/keeper/types.d.ts +1 -1
- package/dist/keeper/types.js +1 -1
- package/dist/knowledge/allocation-ledger.d.ts +4 -1
- package/dist/knowledge/allocation-ledger.js +1 -1
- package/dist/knowledge/allocation-puzzle.d.ts +2 -0
- package/dist/knowledge/allocation-puzzle.js +1 -1
- package/dist/knowledge/allocation-risk.d.ts +1 -1
- package/dist/knowledge/allocation-risk.js +1 -1
- package/dist/knowledge/arb-risk.d.ts +3 -1
- package/dist/knowledge/arb-risk.js +1 -1
- package/dist/knowledge/arbitration-ledger.js +1 -1
- package/dist/knowledge/arbitration-risk.js +1 -1
- package/dist/knowledge/arbitration-templates.d.ts +1 -0
- package/dist/knowledge/arbitration-templates.js +1 -1
- package/dist/knowledge/audit-rules.d.ts +13 -2
- package/dist/knowledge/audit-rules.js +1 -1
- package/dist/knowledge/baselines/rules/allocation.json +50 -1
- package/dist/knowledge/baselines/rules/arb.json +20 -1
- package/dist/knowledge/baselines/rules/arbitration.json +27 -0
- package/dist/knowledge/baselines/rules/guard.json +75 -2
- package/dist/knowledge/baselines/rules/machine.json +38 -13
- package/dist/knowledge/baselines/rules/order.json +2 -2
- package/dist/knowledge/builtin-templates.d.ts +3 -1
- package/dist/knowledge/builtin-templates.js +1 -1
- package/dist/knowledge/event-semantics.js +1 -1
- package/dist/knowledge/fund-layer.js +1 -1
- package/dist/knowledge/getting-started.js +1 -1
- package/dist/knowledge/guard-anchor-reach.d.ts +19 -0
- package/dist/knowledge/guard-anchor-reach.js +1 -0
- package/dist/knowledge/guard-bindings.js +1 -1
- package/dist/knowledge/guard-design-patterns.d.ts +1 -1
- package/dist/knowledge/guard-design-patterns.js +1 -1
- package/dist/knowledge/guard-ledger.js +1 -1
- package/dist/knowledge/guard-lint.js +1 -1
- package/dist/knowledge/guard-render.d.ts +6 -0
- package/dist/knowledge/guard-render.js +1 -1
- package/dist/knowledge/guard-risk.js +1 -1
- package/dist/knowledge/guard-submission-prompt.d.ts +6 -0
- package/dist/knowledge/guard-submission-prompt.js +1 -1
- package/dist/knowledge/guard-templates.d.ts +1 -1
- package/dist/knowledge/guard-templates.js +1 -1
- package/dist/knowledge/index.d.ts +4 -4
- package/dist/knowledge/index.js +1 -1
- package/dist/knowledge/industry-generalizer.js +1 -1
- package/dist/knowledge/industry-registry.d.ts +1 -1
- package/dist/knowledge/industry-registry.js +1 -1
- package/dist/knowledge/jsonrpc-enum.js +1 -1
- package/dist/knowledge/machine-ledger.js +1 -1
- package/dist/knowledge/machine-risk.js +1 -1
- package/dist/knowledge/machine-templates.js +1 -1
- package/dist/knowledge/order-ledger.js +1 -1
- package/dist/knowledge/order-templates.js +1 -1
- package/dist/knowledge/permission-ledger.js +1 -1
- package/dist/knowledge/release-sentinel.d.ts +12 -0
- package/dist/knowledge/release-sentinel.js +1 -0
- package/dist/knowledge/repository-write-semantics.d.ts +27 -0
- package/dist/knowledge/repository-write-semantics.js +1 -0
- package/dist/knowledge/rule-node-analyzers.d.ts +6 -0
- package/dist/knowledge/rule-node-analyzers.js +1 -1
- package/dist/knowledge/safety-rules.d.ts +5 -1
- package/dist/knowledge/safety-rules.js +1 -1
- package/dist/knowledge/scenario-modes.d.ts +10 -1
- package/dist/knowledge/scenario-modes.js +1 -1
- package/dist/knowledge/service-allocation-semantics.d.ts +36 -0
- package/dist/knowledge/service-allocation-semantics.js +1 -0
- package/dist/knowledge/strategy-manuals.d.ts +3 -5
- package/dist/knowledge/strategy-manuals.js +1 -1
- package/dist/knowledge/template-loader.d.ts +28 -12
- package/dist/knowledge/template-loader.js +1 -1
- package/dist/knowledge/template-registry.js +1 -1
- package/dist/knowledge/template-scanner.js +1 -1
- package/dist/knowledge/tools-reference.js +1 -1
- package/dist/knowledge/workflow-guidance.d.ts +26 -0
- package/dist/knowledge/workflow-guidance.js +1 -1
- package/dist/monitor/MonitorLoop.js +1 -1
- package/dist/participation/allocation-advice.d.ts +38 -0
- package/dist/participation/allocation-advice.js +1 -0
- package/dist/participation/radar-core.d.ts +2 -0
- package/dist/persona/types.d.ts +3 -2
- package/dist/persona/types.js +1 -1
- package/dist/playbooks/service-build/business-puzzle.js +1 -1
- package/dist/playbooks/service-build/intent-analyzer.js +1 -1
- package/dist/playbooks/service-build/merchant-guide.d.ts +70 -63
- package/dist/playbooks/service-build/merchant-guide.js +1 -1
- package/dist/playbooks/service-build/migration-planner.js +1 -1
- package/dist/playbooks/service-build/mode-actions.d.ts +5 -0
- package/dist/playbooks/service-build/mode-actions.js +1 -1
- package/dist/playbooks/service-build/participation-radar.js +1 -1
- package/dist/playbooks/service-build/semantic-graph.d.ts +1 -0
- package/dist/playbooks/service-build/semantic-graph.js +1 -1
- package/dist/playbooks/service-build/service-quote.d.ts +2 -0
- package/dist/playbooks/service-build/service-quote.js +1 -0
- package/dist/relationship/derivation.d.ts +1 -1
- package/dist/safety/confirm-gate.js +1 -1
- package/dist/schema/benchmark-migration/index.d.ts +30 -8
- package/dist/schema/benchmark-migration/index.js +1 -1
- package/dist/schema/call/allocation.d.ts +6 -3
- package/dist/schema/call/arbitration.js +1 -1
- package/dist/schema/call/base.js +1 -1
- package/dist/schema/call/guard.d.ts +8 -8
- package/dist/schema/call/machine.d.ts +56 -0
- package/dist/schema/call/machine.js +1 -1
- package/dist/schema/call/order.js +1 -1
- package/dist/schema/call/payment.js +1 -1
- package/dist/schema/call/semantic.js +1 -1
- package/dist/schema/call/service.d.ts +84 -22
- package/dist/schema/call/service.js +1 -1
- package/dist/schema/common/index.js +1 -1
- package/dist/schema/common/tokentype-short-probe.spec.js +1 -0
- package/dist/schema/evaluation/index.d.ts +8 -80
- package/dist/schema/evaluation/index.js +1 -1
- package/dist/schema/goal/index.d.ts +9 -42
- package/dist/schema/goal/planning.d.ts +25 -60
- package/dist/schema/goal/planning.js +1 -1
- package/dist/schema/intent-radar/index.d.ts +2 -20
- package/dist/schema/intent-radar/index.js +1 -1
- package/dist/schema/interaction/index.d.ts +1 -1
- package/dist/schema/keeper/index.d.ts +3 -0
- package/dist/schema/keeper/index.js +1 -1
- package/dist/schema/local/index.js +1 -1
- package/dist/schema/operations.d.ts +74 -14
- package/dist/schema/persona/index.d.ts +279 -384
- package/dist/schema/persona/index.js +1 -1
- package/dist/schema/query/bi.d.ts +149 -10
- package/dist/schema/query/bi.js +1 -1
- package/dist/schema/query/index.d.ts +35 -16
- package/dist/schema/query/index.js +1 -1
- package/dist/schema/schema-query/index.d.ts +4 -4
- package/dist/schema/schema-version.js +1 -1
- package/dist/schema/watch/index.d.ts +2 -2
- package/dist/schema-query-impl/index.d.ts +1 -0
- package/dist/schema-query-impl/index.js +1 -1
- package/dist/schemas/account_operation.output.json +2 -2
- package/dist/schemas/benchmark_migration_operation.output.json +116 -2
- package/dist/schemas/benchmark_migration_operation.schema.json +2 -10
- package/dist/schemas/bridge_operation.output.json +2 -2
- package/dist/schemas/evaluation_operation.schema.json +7 -70
- package/dist/schemas/goal_operation.schema.json +6 -39
- package/dist/schemas/index.json +1 -1
- package/dist/schemas/intent_radar.output.json +4 -20
- package/dist/schemas/keeper_operation.output.json +2 -2
- package/dist/schemas/keeper_operation.schema.json +9 -4
- package/dist/schemas/local_history_operation.output.json +2 -2
- package/dist/schemas/local_info_operation.output.json +2 -2
- package/dist/schemas/local_mark_operation.output.json +2 -2
- package/dist/schemas/messenger_operation.output.json +2 -2
- package/dist/schemas/monitor_events.output.json +2 -2
- package/dist/schemas/monitor_subscription.output.json +2 -2
- package/dist/schemas/onchain_events.output.json +2 -2
- package/dist/schemas/onchain_operations.output.json +6 -6
- package/dist/schemas/onchain_operations.schema.json +227 -54
- package/dist/schemas/onchain_operations_allocation.schema.json +11 -10
- package/dist/schemas/onchain_operations_arbitration.schema.json +13 -13
- package/dist/schemas/onchain_operations_machine.schema.json +27 -5
- package/dist/schemas/onchain_operations_order.schema.json +1 -1
- package/dist/schemas/onchain_operations_payment.schema.json +2 -2
- package/dist/schemas/onchain_operations_reward.schema.json +1 -1
- package/dist/schemas/onchain_operations_service.schema.json +171 -21
- package/dist/schemas/onchain_operations_treasury.schema.json +1 -1
- package/dist/schemas/onchain_table_data.output.json +57 -4
- package/dist/schemas/persona_operation.output.json +11 -88
- package/dist/schemas/persona_operation.schema.json +4 -32
- package/dist/schemas/query_toolkit.output.json +320 -22
- package/dist/schemas/query_toolkit.schema.json +53 -0
- package/dist/tools/handlers/benchmark-migration.js +1 -1
- package/dist/tools/handlers/config.js +1 -1
- package/dist/tools/handlers/dispatch-expectations.spec.js +1 -1
- package/dist/tools/handlers/keeper.d.ts +1 -1
- package/dist/tools/handlers/onchain.js +1 -1
- package/dist/tools/handlers/query.js +1 -1
- package/dist/tools/handlers/schema-query.js +1 -1
- package/dist/tools/index.js +1 -1
- package/dist/tools/move-fn-index.gen.js +1 -1
- package/dist/tools/registry/business.js +1 -1
- package/dist/tools/wrap.js +1 -1
- package/package.json +2 -2
- package/dist/knowledge/alloc-audit-policy.spec.js +0 -1
- package/dist/knowledge/event-semantics.spec.d.ts +0 -1
- package/dist/knowledge/event-semantics.spec.js +0 -1
- package/dist/knowledge/facts-sync.spec.d.ts +0 -1
- package/dist/knowledge/facts-sync.spec.js +0 -1
- package/dist/knowledge/guard-design-patterns.spec.d.ts +0 -1
- package/dist/knowledge/guard-design-patterns.spec.js +0 -1
- package/dist/knowledge/guard-eval.spec.d.ts +0 -1
- package/dist/knowledge/guard-eval.spec.js +0 -1
- package/dist/knowledge/rule-node-analyzers.spec.d.ts +0 -1
- package/dist/knowledge/rule-node-analyzers.spec.js +0 -1
- package/dist/knowledge/safety-rules.extract-amount.spec.d.ts +0 -1
- package/dist/knowledge/safety-rules.extract-amount.spec.js +0 -1
- package/dist/knowledge/template-loader.spec.d.ts +0 -1
- package/dist/knowledge/template-loader.spec.js +0 -1
- package/dist/knowledge/template-scanner.spec.d.ts +0 -1
- package/dist/knowledge/template-scanner.spec.js +0 -1
- /package/dist/{knowledge/alloc-audit-policy.spec.d.ts → schema/common/tokentype-short-probe.spec.d.ts} +0 -0
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
export declare const ServiceBuyItemSchema: z.ZodObject<{
|
|
2
|
+
export declare const ServiceBuyItemSchema: z.ZodPreprocess<z.ZodObject<{
|
|
3
3
|
name: z.ZodString;
|
|
4
|
-
|
|
5
|
-
wip_hash: z.ZodString
|
|
6
|
-
}, z.core.$strict
|
|
4
|
+
quantity: z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>;
|
|
5
|
+
wip_hash: z.ZodDefault<z.ZodString>;
|
|
6
|
+
}, z.core.$strict>>;
|
|
7
7
|
export declare const BuySchema: z.ZodObject<{
|
|
8
|
-
items: z.ZodArray<z.ZodObject<{
|
|
8
|
+
items: z.ZodArray<z.ZodPreprocess<z.ZodObject<{
|
|
9
9
|
name: z.ZodString;
|
|
10
|
-
|
|
11
|
-
wip_hash: z.ZodString
|
|
12
|
-
}, z.core.$strict
|
|
10
|
+
quantity: z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>;
|
|
11
|
+
wip_hash: z.ZodDefault<z.ZodString>;
|
|
12
|
+
}, z.core.$strict>>>;
|
|
13
13
|
total_pay: z.ZodUnion<readonly [z.ZodObject<{
|
|
14
14
|
balance: z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>;
|
|
15
15
|
}, z.core.$strip>, z.ZodObject<{
|
|
@@ -41,11 +41,11 @@ export declare const DiscountSchema: z.ZodObject<{
|
|
|
41
41
|
}, z.core.$strict>;
|
|
42
42
|
export declare const OrderNewSchema: z.ZodObject<{
|
|
43
43
|
buy: z.ZodObject<{
|
|
44
|
-
items: z.ZodArray<z.ZodObject<{
|
|
44
|
+
items: z.ZodArray<z.ZodPreprocess<z.ZodObject<{
|
|
45
45
|
name: z.ZodString;
|
|
46
|
-
|
|
47
|
-
wip_hash: z.ZodString
|
|
48
|
-
}, z.core.$strict
|
|
46
|
+
quantity: z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>;
|
|
47
|
+
wip_hash: z.ZodDefault<z.ZodString>;
|
|
48
|
+
}, z.core.$strict>>>;
|
|
49
49
|
total_pay: z.ZodUnion<readonly [z.ZodObject<{
|
|
50
50
|
balance: z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>;
|
|
51
51
|
}, z.core.$strip>, z.ZodObject<{
|
|
@@ -111,6 +111,26 @@ export declare const SalesSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
111
111
|
sales_name: z.ZodArray<z.ZodString>;
|
|
112
112
|
}, z.core.$strict>, z.ZodObject<{
|
|
113
113
|
op: z.ZodLiteral<"clear">;
|
|
114
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
115
|
+
op: z.ZodLiteral<"price_add">;
|
|
116
|
+
sale_name: z.ZodString;
|
|
117
|
+
value: z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>;
|
|
118
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
119
|
+
op: z.ZodLiteral<"price_reduce">;
|
|
120
|
+
sale_name: z.ZodString;
|
|
121
|
+
value: z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>;
|
|
122
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
123
|
+
op: z.ZodLiteral<"stock_add">;
|
|
124
|
+
sale_name: z.ZodString;
|
|
125
|
+
value: z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>;
|
|
126
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
127
|
+
op: z.ZodLiteral<"stock_reduce">;
|
|
128
|
+
sale_name: z.ZodString;
|
|
129
|
+
value: z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>;
|
|
130
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
131
|
+
op: z.ZodLiteral<"sale_suspension">;
|
|
132
|
+
sale_name: z.ZodString;
|
|
133
|
+
suspension: z.ZodBoolean;
|
|
114
134
|
}, z.core.$strict>], "op">;
|
|
115
135
|
export declare const CallService_DataSchema: z.ZodObject<{
|
|
116
136
|
object: z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
|
|
@@ -129,11 +149,11 @@ export declare const CallService_DataSchema: z.ZodObject<{
|
|
|
129
149
|
}, z.core.$strict>]>;
|
|
130
150
|
order_new: z.ZodOptional<z.ZodObject<{
|
|
131
151
|
buy: z.ZodObject<{
|
|
132
|
-
items: z.ZodArray<z.ZodObject<{
|
|
152
|
+
items: z.ZodArray<z.ZodPreprocess<z.ZodObject<{
|
|
133
153
|
name: z.ZodString;
|
|
134
|
-
|
|
135
|
-
wip_hash: z.ZodString
|
|
136
|
-
}, z.core.$strict
|
|
154
|
+
quantity: z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>;
|
|
155
|
+
wip_hash: z.ZodDefault<z.ZodString>;
|
|
156
|
+
}, z.core.$strict>>>;
|
|
137
157
|
total_pay: z.ZodUnion<readonly [z.ZodObject<{
|
|
138
158
|
balance: z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>;
|
|
139
159
|
}, z.core.$strip>, z.ZodObject<{
|
|
@@ -201,6 +221,26 @@ export declare const CallService_DataSchema: z.ZodObject<{
|
|
|
201
221
|
sales_name: z.ZodArray<z.ZodString>;
|
|
202
222
|
}, z.core.$strict>, z.ZodObject<{
|
|
203
223
|
op: z.ZodLiteral<"clear">;
|
|
224
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
225
|
+
op: z.ZodLiteral<"price_add">;
|
|
226
|
+
sale_name: z.ZodString;
|
|
227
|
+
value: z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>;
|
|
228
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
229
|
+
op: z.ZodLiteral<"price_reduce">;
|
|
230
|
+
sale_name: z.ZodString;
|
|
231
|
+
value: z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>;
|
|
232
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
233
|
+
op: z.ZodLiteral<"stock_add">;
|
|
234
|
+
sale_name: z.ZodString;
|
|
235
|
+
value: z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>;
|
|
236
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
237
|
+
op: z.ZodLiteral<"stock_reduce">;
|
|
238
|
+
sale_name: z.ZodString;
|
|
239
|
+
value: z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>;
|
|
240
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
241
|
+
op: z.ZodLiteral<"sale_suspension">;
|
|
242
|
+
sale_name: z.ZodString;
|
|
243
|
+
suspension: z.ZodBoolean;
|
|
204
244
|
}, z.core.$strict>], "op">>;
|
|
205
245
|
repositories: z.ZodOptional<z.ZodPreprocess<z.ZodUnion<readonly [z.ZodObject<{
|
|
206
246
|
op: z.ZodUnion<readonly [z.ZodLiteral<"add">, z.ZodLiteral<"set">]>;
|
|
@@ -273,7 +313,8 @@ export declare const CallService_DataSchema: z.ZodObject<{
|
|
|
273
313
|
Amount: "Amount";
|
|
274
314
|
Surplus: "Surplus";
|
|
275
315
|
Rate: "Rate";
|
|
276
|
-
|
|
316
|
+
RateGross: "RateGross";
|
|
317
|
+
}>, z.ZodPipe<z.ZodNumber, z.ZodTransform<"Amount" | "Surplus" | "Rate" | "RateGross", number>>]>;
|
|
277
318
|
}, z.core.$strip>>;
|
|
278
319
|
fix: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>>;
|
|
279
320
|
max: z.ZodOptional<z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>, z.ZodNull]>>;
|
|
@@ -355,11 +396,11 @@ export declare const CallService_InputSchema: z.ZodObject<{
|
|
|
355
396
|
}, z.core.$strict>]>;
|
|
356
397
|
order_new: z.ZodOptional<z.ZodObject<{
|
|
357
398
|
buy: z.ZodObject<{
|
|
358
|
-
items: z.ZodArray<z.ZodObject<{
|
|
399
|
+
items: z.ZodArray<z.ZodPreprocess<z.ZodObject<{
|
|
359
400
|
name: z.ZodString;
|
|
360
|
-
|
|
361
|
-
wip_hash: z.ZodString
|
|
362
|
-
}, z.core.$strict
|
|
401
|
+
quantity: z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>;
|
|
402
|
+
wip_hash: z.ZodDefault<z.ZodString>;
|
|
403
|
+
}, z.core.$strict>>>;
|
|
363
404
|
total_pay: z.ZodUnion<readonly [z.ZodObject<{
|
|
364
405
|
balance: z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>;
|
|
365
406
|
}, z.core.$strip>, z.ZodObject<{
|
|
@@ -427,6 +468,26 @@ export declare const CallService_InputSchema: z.ZodObject<{
|
|
|
427
468
|
sales_name: z.ZodArray<z.ZodString>;
|
|
428
469
|
}, z.core.$strict>, z.ZodObject<{
|
|
429
470
|
op: z.ZodLiteral<"clear">;
|
|
471
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
472
|
+
op: z.ZodLiteral<"price_add">;
|
|
473
|
+
sale_name: z.ZodString;
|
|
474
|
+
value: z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>;
|
|
475
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
476
|
+
op: z.ZodLiteral<"price_reduce">;
|
|
477
|
+
sale_name: z.ZodString;
|
|
478
|
+
value: z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>;
|
|
479
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
480
|
+
op: z.ZodLiteral<"stock_add">;
|
|
481
|
+
sale_name: z.ZodString;
|
|
482
|
+
value: z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>;
|
|
483
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
484
|
+
op: z.ZodLiteral<"stock_reduce">;
|
|
485
|
+
sale_name: z.ZodString;
|
|
486
|
+
value: z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>;
|
|
487
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
488
|
+
op: z.ZodLiteral<"sale_suspension">;
|
|
489
|
+
sale_name: z.ZodString;
|
|
490
|
+
suspension: z.ZodBoolean;
|
|
430
491
|
}, z.core.$strict>], "op">>;
|
|
431
492
|
repositories: z.ZodOptional<z.ZodPreprocess<z.ZodUnion<readonly [z.ZodObject<{
|
|
432
493
|
op: z.ZodUnion<readonly [z.ZodLiteral<"add">, z.ZodLiteral<"set">]>;
|
|
@@ -499,7 +560,8 @@ export declare const CallService_InputSchema: z.ZodObject<{
|
|
|
499
560
|
Amount: "Amount";
|
|
500
561
|
Surplus: "Surplus";
|
|
501
562
|
Rate: "Rate";
|
|
502
|
-
|
|
563
|
+
RateGross: "RateGross";
|
|
564
|
+
}>, z.ZodPipe<z.ZodNumber, z.ZodTransform<"Amount" | "Surplus" | "Rate" | "RateGross", number>>]>;
|
|
503
565
|
}, z.core.$strip>>;
|
|
504
566
|
fix: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>>;
|
|
505
567
|
max: z.ZodOptional<z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>, z.ZodNull]>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{z}from'zod';import{TypedPermissionObjectSchema,CoinParamSchema,NamedObjectSchema,ObjectsSchema,CallEnvSchema,SubmissionCallSchema}from'./base.js';import{AllocatorsSchema,DiscountTypeSchema,ServiceSaleSchema,PaymentInfoSchema}from'../query/index.js';import{AccountOrMark_AddressSchema,DescriptionSchema,LongNameSchema,ManyAccountOrMark_AddressSchema,NameOrAddressSchema,NotEmptyNameSchema,ReceivedBalanceOrRecentlySchema,ReceivedObjectsOrRecentlySchema,RECEIVE_FORMAT_BLOCK_OBJECTS,RECEIVE_FORMAT_BLOCK_BALANCE}from'../common/index.js';import{BalanceTypeSchema}from'../common/index.js';export const ServiceBuyItemSchema=z['object']({'name':LongNameSchema['describe']('Name\x20of\x20the\x20product\x20or\x20service\x20to\x20purchase'),'stock':BalanceTypeSchema['describe']('Quantity\x20of\x20the\x20product\x20or\x20service\x20to\x20purchase'),'wip_hash':z['string']()['describe']('WIP\x20file\x20hash\x20of\x20the\x20item.\x20EMPTY\x20string\x20\x22\x22\x20means\x20only\x20verify\x20the\x20WIP\x20file\x20integrity\x20without\x20comparing\x20to\x20a\x20specific\x20hash\x20(the\x20hash\x20within\x20the\x20wip\x20file\x20will\x20be\x20used).\x20For\x20purchases,\x20it\x20is\x20STRONGLY\x20RECOMMENDED\x20to\x20fill\x20in\x20the\x20hash\x20you\x20saw\x20when\x20viewing\x20the\x20product\x20info\x20(from\x20the\x20Service\x20sale\x27s\x20wip_hash\x20field)\x20to\x20prevent\x20the\x20merchant\x20from\x20replacing\x20the\x20WIP\x20file\x20before\x20your\x20order\x20is\x20placed\x20(a\x20legitimate\x20update\x20operation),\x20which\x20would\x20cause\x20inconsistency\x20between\x20what\x20you\x20saw\x20and\x20what\x20you\x20received.')})['strict']();export const BuySchema=z['object']({'items':z['array'](ServiceBuyItemSchema)['describe']('List\x20of\x20products\x20or\x20services\x20to\x20purchase'),'total_pay':CoinParamSchema['describe']('Actual\x20payment\x20amount.\x20FORMAT:\x20{balance:\x20<amount_in_smallest_unit>}\x20or\x20{coin:\x20<coin_object_id>}.\x20'+'The\x20token\x20type\x20and\x20precision\x20are\x20determined\x20by\x20the\x20Service\x20object\x27s\x20type_parameter\x20(the\x20generic\x20type\x20set\x20when\x20the\x20Service\x20was\x20created).\x20'+'For\x20WOW\x20(9\x20decimals):\x20{balance:\x201000000000}\x20=\x201\x20WOW.\x20'),'discount':z['string']()['optional']()['describe']('Discount\x20object\x20ID\x20or\x20name'),'payment_remark':z['string']()['optional']()['describe']('Payment\x20remark'),'payment_index':z['number']()['optional']()['describe']('Payment\x20index')})['strict']();export const DiscountSchema=z['object']({'name':z['string']()['describe']('Discount\x20name'),'discount_type':DiscountTypeSchema,'discount_value':BalanceTypeSchema['describe']('Discount\x20magnitude,\x20meaning\x20depends\x20on\x20discount_type.\x20'+'RATES\x20(0):\x20per-10000\x20off\x20rate\x20—\x2010\x20=\x200.1%\x20off,\x201000\x20=\x2010%\x20off,\x2010000\x20=\x20100%\x20off;\x20values\x20above\x2010000\x20are\x20rejected.\x20'+'FIXED\x20(1):\x20fixed\x20deduction\x20from\x20the\x20order\x20total\x20in\x20the\x20Service\x20token\x27s\x20smallest\x20units\x20(e.g.\x201000000000\x20=\x201\x20WOW\x20at\x209\x20decimals).'),'benchmark':z['union']([z['number'](),z['string']()])['optional']()['describe']('Minimum\x20order\x20total\x20(in\x20the\x20Service\x20token\x27s\x20smallest\x20units)\x20for\x20the\x20discount\x20to\x20apply\x20—\x20'+'the\x20discount\x20is\x20applied\x20only\x20when\x20the\x20order\x20total\x20is\x20GREATER\x20THAN\x20OR\x20EQUAL\x20TO\x20this\x20value.\x20'+'⚠️\x20OMITTING\x20this\x20field\x20means\x20the\x20discount\x20NEVER\x20applies:\x20the\x20coupon\x20object\x20is\x20still\x20consumed\x20(destroyed)\x20'+'when\x20used,\x20but\x20the\x20order\x20total\x20is\x20unchanged.\x20To\x20make\x20a\x20discount\x20that\x20always\x20applies,\x20pass\x200.\x20'+'If\x20the\x20order\x20total\x20is\x20below\x20the\x20discounted\x20price\x20the\x20payment\x20aborts\x20—\x20pay\x20the\x20list\x20price;\x20the\x20excess\x20is\x20returned\x20as\x20a\x20new\x20Coin.'),'time_ms_start':z['number']()['optional']()['describe']('Discount\x20start\x20time\x20(milliseconds)'),'time_ms_end':z['number']()['describe']('Discount\x20end\x20time\x20(milliseconds)'),'count':z['number']()['describe']('Number\x20of\x20SEPARATE\x20Discount\x20(coupon)\x20objects\x20minted\x20—\x20total\x20delivered\x20=\x20count\x20×\x20number\x20of\x20recipients.\x20'+'Each\x20coupon\x20object\x20is\x20SINGLE-USE\x20(consumed\x20on\x20first\x20use).\x20This\x20is\x20NOT\x20a\x20per-coupon\x20reuse\x20count:\x20'+'count:2\x20creates\x202\x20independent\x20one-time\x20coupons,\x20not\x201\x20coupon\x20usable\x20twice.'),'recipient':ManyAccountOrMark_AddressSchema['describe']('Discount\x20recipient'),'transferable':z['boolean']()['describe']('Whether\x20the\x20discount\x20object\x20recipient\x20can\x20transfer\x20the\x20discount\x20object')})['strict']();export const OrderNewSchema=z['object']({'buy':BuySchema,'agents':ManyAccountOrMark_AddressSchema['optional']()['describe']('Order\x20agents.\x20Agents\x20can\x20operate\x20the\x20order,\x20such\x20as\x20canceling\x20the\x20order,\x20modifying\x20the\x20order\x20status,\x20etc.;\x20but\x20cannot\x20receive\x20the\x20funds\x20received\x20by\x20the\x20order.'),'order_required_info':z['string']()['optional']()['describe']('Contact\x20object\x20ID\x20or\x20WTS\x20Proof\x20object,\x20recorded\x20on\x20the\x20Order\x20as\x20proof\x20that\x20the\x20order\x20holder\x20'+'delivered\x20the\x20required\x20private\x20information\x20(service.customer_required)\x20to\x20the\x20merchant.\x20'+'FLOW:\x20when\x20a\x20Service\x20declares\x20customer_required\x20(e.g.\x20phone/email/shipping_address),\x20the\x20order\x20holder\x20'+'MUST\x20send\x20that\x20private\x20information\x20to\x20the\x20Service\x27s\x20Contact\x20(um)\x20via\x20end-to-end\x20encrypted\x20Messenger,\x20'+'then\x20pass\x20the\x20Contact\x20object\x20ID\x20or\x20the\x20generated\x20WTS\x20Proof\x20here\x20so\x20the\x20delivery\x20is\x20verifiable\x20on-chain.'),'transfer':AccountOrMark_AddressSchema['optional']()['describe']('Set\x20the\x20new\x20owner\x20of\x20the\x20order.\x20Requires\x20order\x20owner\x20permission\x20to\x20set.'),'namedNewOrder':NamedObjectSchema['optional']()['describe']('RECOMMENDED:\x20Set\x20a\x20local\x20name\x20for\x20the\x20newly\x20created\x20Order\x20object.\x20'+'Without\x20this,\x20the\x20Order\x20is\x20only\x20referenceable\x20by\x20its\x20on-chain\x20address.\x20'+'Example:\x20{name:\x20\x27my_order_v1\x27}\x20allows\x20subsequent\x20operations\x20to\x20use\x20\x27my_order_v1\x27\x20instead\x20of\x20the\x20address.'),'namedNewAllocation':NamedObjectSchema['optional']()['describe']('RECOMMENDED:\x20Set\x20a\x20local\x20name\x20for\x20the\x20order\x27s\x20Allocation\x20object.\x20'+'Without\x20this,\x20the\x20Allocation\x20is\x20only\x20referenceable\x20by\x20its\x20address.\x20'+'Example:\x20{name:\x20\x27my_allocation_v1\x27}\x20allows\x20alloc_by_guard\x20to\x20reference\x20\x27my_allocation_v1\x27.'),'namedNewProgress':NamedObjectSchema['optional']()['describe']('RECOMMENDED:\x20Set\x20a\x20local\x20name\x20for\x20the\x20order\x27s\x20Progress\x20object.\x20'+'Without\x20this,\x20the\x20Progress\x20is\x20only\x20referenceable\x20by\x20its\x20address.\x20'+'Example:\x20{name:\x20\x27my_progress_v1\x27}\x20allows\x20progress\x20operations\x20to\x20use\x20\x27my_progress_v1\x27.')})['strict']();export const SalesSchema=z['discriminatedUnion']('op',[z['object']({'op':z['literal']('add'),'sales':z['array'](ServiceSaleSchema)})['strict']()['describe']('Add\x20new\x20sales\x20products\x20or\x20services.'),z['object']({'op':z['literal']('set'),'sales':z['array'](ServiceSaleSchema)})['strict']()['describe']('Replaces\x20the\x20ENTIRE\x20sales\x20list:\x20every\x20product\x20NOT\x20included\x20is\x20REMOVED\x20from\x20the\x20Service\x20'+'(its\x20stock\x20and\x20wip\x20binding\x20go\x20with\x20it\x20—\x20there\x20is\x20no\x20per-item\x20update\x20via\x20this\x20op).\x20'+'To\x20change\x20one\x20product\x20(e.g.\x20its\x20price\x20or\x20stock),\x20resend\x20the\x20FULL\x20list\x20including\x20all\x20unchanged\x20products.\x20'+'Removal\x20is\x20immediate\x20and\x20cannot\x20be\x20undone.'),z['object']({'op':z['literal']('remove'),'sales_name':z['array'](LongNameSchema['describe']('Sales\x20name'))})['strict']()['describe']('Remove\x20existing\x20sales\x20products\x20or\x20services.'),z['object']({'op':z['literal']('clear')})['strict']()['describe']('Clear\x20all\x20sales\x20products\x20or\x20services.')]);export const CallService_DataSchema=z['object']({'object':TypedPermissionObjectSchema,'order_new':OrderNewSchema['optional']()['describe']('Create\x20new\x20order.'),'description':DescriptionSchema['optional'](),'location':LongNameSchema['optional']()['describe']('The\x20service\x20area\x20and\x20scope\x20as\x20stated\x20by\x20the\x20merchant.\x20'+'IMPORTANT:\x20If\x20the\x20service\x20has\x20a\x20geographic\x20scope,\x20ALWAYS\x20specify\x20this\x20field.\x20'+'Use\x20a\x20complete\x20hierarchical\x20address\x20'+'(e.g.\x20\x27US\x20→\x20California\x20→\x20Los\x20Angeles\x20→\x20Koreatown\x27).\x20'+'If\x20only\x20a\x20partial\x20location\x20is\x20known,\x20EXPAND\x20it\x20to\x20the\x20full\x20standardized\x20form\x20'+'(country\x20→\x20province/state\x20→\x20city\x20→\x20district,\x20worldwide)\x20—\x20when\x20ambiguous,\x20offer\x202-4\x20candidate\x20completions\x20and\x20let\x20the\x20user\x20pick.'),'sales':SalesSchema['optional']()['describe']('Service\x20sales\x20products\x20or\x20services\x20list.\x20'+'⚠️\x20WIP\x20NETWORK-DEPLOYMENT\x20RULE:\x20a\x20non-empty\x20sale.wip\x20MUST\x20be\x20a\x20publicly\x20reachable\x20URL\x20'+'(GitHub\x20Pages\x20/\x20IPFS\x20/\x20your\x20own\x20website).\x20The\x20URL\x20is\x20stored\x20ON-CHAIN\x20and\x20every\x20customer\x20'+'fetches\x20it\x20at\x20order\x20time\x20—\x20a\x20local\x20file\x20path,\x20localhost/loopback\x20URL,\x20or\x20LAN\x20private-IP\x20URL\x20'+'is\x20unreachable\x20by\x20customers\x20on\x20other\x20machines\x20and\x20aborts\x20order_new\x20100%.\x20Local-network\x20URLs\x20'+'are\x20INTERNAL\x20TEST\x20USE\x20ONLY\x20(env.network\x20=\x20localnet).\x20Leave\x20sale.wip\x20empty\x20(\x22\x22)\x20to\x20skip\x20'+'WIP\x20verification\x20(TESTING\x20ONLY).'),'repositories':ObjectsSchema['optional']()['describe']('Service\x20Repository\x20object\x20list.'),'rewards':ObjectsSchema['optional']()['describe']('Service\x20Reward\x20object\x20list.\x20'+'May\x20share\x20the\x20Service\x27s\x20Permission\x20(no\x20conflict\x20check\x20—\x20intentional:\x20rewards\x20are\x20the\x20provider\x27s\x20own\x20'+'incentive\x20tool;\x20only\x20Arbitration\x20requires\x20a\x20different\x20Permission\x20for\x20neutrality).'),'arbitrations':ObjectsSchema['optional']()['describe']('Service\x20Arbitration\x20object\x20list.\x20'+'FORMAT:\x20same\x20as\x20repositories\x20—\x20use\x20the\x20`objects`\x20field\x20name\x20inside\x20the\x20operation\x20data.\x20'+'Example:\x20{arbitrations:\x20[{name:\x20\x27my_arb_1\x27},\x20{name:\x20\x27my_arb_2\x27}]}.\x20'+'Each\x20item\x20is\x20a\x20NameOrAddress\x20(object\x20ID\x20or\x20local\x20mark\x20name).\x20'+'⚠️\x20PERMISSION\x20RULE\x20(contract-enforced):\x20every\x20Arbitration\x20bound\x20here\x20'+'MUST\x20use\x20a\x20Permission\x20object\x20DIFFERENT\x20from\x20THIS\x20Service\x27s\x20permission\x20—\x20binding\x20an\x20Arbitration\x20that\x20shares\x20'+'the\x20Service\x27s\x20Permission\x20aborts\x20with\x20E_ARBITRATION_PERMISSION_CONFLICT\x20(error\x2033).\x20'+'Create\x20a\x20dedicated\x20Permission\x20for\x20each\x20Arbitration\x20BEFORE\x20binding.\x20'+'DESIGN\x20RATIONALE\x20(confirmed\x20intentional):\x20dispute\x20resolution\x20requires\x20NEUTRALITY\x20—\x20an\x20Arbitration\x20controlled\x20'+'by\x20the\x20same\x20Permission\x20admins\x20as\x20the\x20Service\x20it\x20judges\x20would\x20be\x20a\x20conflict\x20of\x20interest.\x20ONLY\x20Arbitration\x20has\x20'+'this\x20check:\x20Reward\x20and\x20Treasury\x20objects\x20MAY\x20share\x20the\x20Service\x27s\x20Permission\x20(they\x20are\x20the\x20provider\x27s\x20own\x20tools).'),'machine':z['union']([NameOrAddressSchema,z['null']()])['optional']()['describe']('Service\x20Machine\x20object\x20ID\x20or\x20name.\x20The\x20Machine\x20object\x20must\x20be\x20in\x20published\x20state.'),'discount':DiscountSchema['optional']()['describe']('Issue\x20discount.'),'discount_destroy':z['array'](NameOrAddressSchema)['optional']()['describe']('Destroy\x20existing\x20discount\x20object\x20ID\x20list.'),'customer_required':z['array'](NotEmptyNameSchema)['optional']()['describe']('Customer\x20required\x20information\x20labels.\x20Such\x20as\x20phone,\x20email,\x20shipping_address,\x20etc.\x20'+'⚠️\x20HARD\x20LINKAGE\x20(SDK-enforced):\x20if\x20customer_required\x20is\x20set\x20(non-empty),\x20the\x20Service\x20MUST\x20also\x20bind\x20a\x20'+'Contact\x20via\x20`um`\x20—\x20otherwise\x20the\x20customer\x27s\x20private\x20information\x20cannot\x20be\x20delivered\x20through\x20end-to-end\x20'+'encrypted\x20Messenger\x20(which\x20routes\x20to\x20the\x20Contact\x20bound\x20as\x20um).\x20Set\x20`um`\x20together\x20with\x20customer_required.'),'order_allocators':z['union']([AllocatorsSchema,z['null']()])['optional']()['describe']('Order\x20fund\x20allocator.\x20Max\x20100\x20allocators\x20(MAX_ALLOCATOR_COUNT).\x20'+'Each\x20allocator\x20has\x20a\x20guard\x20(first\x20matching\x20guard\x20wins)\x20and\x20a\x20sharing\x20list.\x20'+'Set\x20to\x20null\x20to\x20clear.\x20'+'⚠️\x20PERMANENTLY\x20IMMUTABLE\x20after\x20publish:\x20order_allocators\x20can\x20ONLY\x20be\x20set\x20BEFORE\x20publish=true\x20'+'(on-chain\x20check\x20rejects\x20after\x20publish\x20—\x20E_ALREADY_PUBLISHED).\x20'+'After\x20publish,\x20the\x20ONLY\x20way\x20to\x20change\x20allocation\x20rules\x20is\x20to\x20create\x20a\x20NEW\x20Service\x20object.\x20'+'There\x20is\x20NO\x20pause+lock\x20exception\x20for\x20order_allocators\x20(unlike\x20arbitrations/rewards\x20which\x20have\x20time-lock\x20removal).\x20'+'PRE-PUBLISH\x20CHECKLIST:\x20verify\x20all\x20guard\x20names\x20resolve,\x20all\x20sharing\x20amounts\x20are\x20correct,\x20'+'threshold\x20is\x20set,\x20and\x20recipient\x20types\x20(Entity/Signer/GuardIdentifier)\x20are\x20intended\x20before\x20calling\x20publish=true.\x20'+'GuardIdentifier\x20sharing\x20mode:\x20{who:\x20{GuardIdentifier:\x20<u8>},\x20sharing:\x20<rate>,\x20mode:\x20\x27Rate\x27}\x20—\x20'+'resolves\x20recipient\x20from\x20the\x20Guard\x20table\x20submission\x20at\x20allocation\x20time.\x20BINDING\x20SEMANTICS\x20(contract-enforced,\x20abort\x20code\x2015):\x20'+'in\x20a\x20Service-created\x20Allocation\x20EVERY\x20GuardIdentifier\x20submission\x20must\x20equal\x20the\x20PAYING\x20order\x20—\x20it\x20is\x20always\x20\x27the\x20order\x27,\x20'+'never\x20a\x20third\x20party\x20whose\x20address\x20is\x20supplied\x20at\x20trigger\x20time;\x20use\x20{who:{Entity:...}}\x20for\x20named\x20parties.\x20'+'Canonical\x20order\x20pattern:\x20the\x20recipient\x20slot\x20is\x20the\x20single\x20'+'submitted\x20Order\x20(constrained\x20by\x20the\x20Guard\x20—\x20service\x20binding,\x20qualifying\x20node,\x20signer==order.owner);\x20funds\x20land\x20at\x20that\x20order\x20object\x20and\x20'+'are\x20receivable\x20only\x20by\x20its\x20owner\x20(object\x20receipt\x20=\x20owner\x20receipt).\x20Safety\x20is\x20determined\x20by\x20constraint\x20sufficiency\x20—\x20run\x20the\x20recipient\x20'+'constraint\x20audit\x20before\x20publish.\x20Fixed\x20recipients\x20should\x20use\x20{who:{Entity:...}};\x20unbound\x20Signer\x20recipients\x20are\x20a\x20CRITICAL\x20theft\x20risk.\x20'+'MULTI-CALL\x20ALLOCATION:\x20an\x20allocation\x20can\x20be\x20executed\x20MULTIPLE\x20times\x20(no\x20consumed\x20flag\x20in\x20contract).\x20'+'Use\x20Amount\x20mode\x20(not\x20Surplus)\x20for\x20recurring\x20allocations\x20—\x20Surplus\x20calls\x20balance::withdraw_all\x20which\x20drains\x20the\x20balance.\x20'+'For\x20monthly\x20payment\x20scenarios,\x20create\x20multiple\x20Allocators\x20with\x20time-based\x20Guards\x20+\x20Amount\x20mode\x20sharing\x20items.'),'buy_guard':z['union']([NameOrAddressSchema,z['null']()])['optional']()['describe']('Buy\x20guard\x20object\x20ID\x20or\x20name.'),'compensation_fund_add':CoinParamSchema['optional']()['describe']('Deposit\x20funds\x20into\x20the\x20Service\x20compensation_fund.\x20Used\x20to\x20pay\x20indemnity\x20when\x20arbitration\x20resolves\x20in\x20customer\x27s\x20favor.\x20'+'FORMAT:\x20{balance:\x20<amount_in_smallest_unit>}\x20—\x20the\x20field\x20name\x20is\x20\x27balance\x27\x20(NOT\x20\x27amount\x27).\x20'+'The\x20token\x20type\x20and\x20precision\x20are\x20determined\x20by\x20the\x20Service\x20object\x27s\x20type_parameter\x20(the\x20generic\x20type\x20set\x20when\x20the\x20Service\x20was\x20created).\x20'+'For\x20WOW\x20(9\x20decimals):\x20{balance:\x201000000000}\x20=\x201\x20WOW.\x20'+'For\x20tokens\x20with\x20different\x20decimals,\x20adjust\x20accordingly\x20(e.g.\x20USDC\x20has\x206\x20decimals,\x20so\x20{balance:\x201000000}\x20=\x201\x20USDC).\x20'+'REQUIRES:\x20Permission\x20index\x20315\x20(SERVICE_COMPENSATION_FUND_DEPOSIT)\x20must\x20be\x20granted\x20to\x20the\x20calling\x20account\x20first.\x20'+'COMMON\x20MISTAKE:\x20using\x20{amount:\x20...}\x20or\x20{amount:\x20...,\x20type:\x20\x27WOW\x27}\x20—\x20these\x20will\x20fail.\x20The\x20correct\x20field\x20is\x20\x27balance\x27.'),'compensation_fund_withdraw':z['object']({'receipt':AccountOrMark_AddressSchema['describe']('Receipt\x20address\x20that\x20will\x20receive\x20the\x20withdrawn\x20funds\x20(as\x20a\x20new\x20Payment\x20object)'),'payment_info':PaymentInfoSchema['describe']('Payment\x20info\x20for\x20the\x20new\x20Payment\x20object\x20created\x20to\x20hold\x20the\x20withdrawn\x20funds')})['strict']()['optional']()['describe']('Withdraw\x20ALL\x20funds\x20from\x20the\x20compensation_fund\x20to\x20a\x20new\x20Payment\x20object\x20owned\x20by\x20`receipt`.\x20'+'REQUIRES:\x20Service\x20must\x20be\x20paused\x20AND\x20setting_lock_duration\x20must\x20have\x20elapsed\x20since\x20pause\x20(the\x20unpublished-state\x20check).\x20'+'Withdraws\x20the\x20ENTIRE\x20compensation_fund\x20balance\x20via\x20balance::withdraw_all.\x20'+'DIFFERENT\x20from\x20the\x20order-side\x20compensation\x20claim\x20(for\x20arbitration-winning\x20users,\x20no\x20pause+lock\x20required).'),'setting_lock_duration_add':z['number']()['optional']()['describe']('Additional\x20lock\x20duration\x20to\x20ADD\x20to\x20\x27setting_lock_duration\x27\x20(Move\x20field\x20name).\x20'+'UNIT:\x20milliseconds\x20(ms).\x20Example:\x202592000000\x20=\x2030\x20days,\x207776000000\x20=\x2090\x20days,\x2086400000\x20=\x201\x20day.\x20'+'DEFAULT:\x202592000000\x20(30\x20days,\x20DEFAULT_LOCK_DURATION).\x20This\x20is\x20the\x20initial\x20value\x20when\x20a\x20Service\x20is\x20created.\x20'+'Behavior:\x20additive\x20(safe_add)\x20—\x20only\x20increases,\x20never\x20decreases.\x20'+'Can\x20be\x20called\x20BEFORE\x20or\x20AFTER\x20publish\x20(no\x20publish\x20check).\x20'+'Affects\x20the\x20waiting\x20time\x20required\x20by:\x20compensation_fund_withdraw,\x20arbitrations\x20remove/clear,\x20rewards\x20remove/clear\x20'+'(all\x20require\x20pause\x20+\x20setting_lock_duration\x20elapsed\x20since\x20pause).'),'compensation_fund_receive':ReceivedBalanceOrRecentlySchema['optional']()['describe']('Receive\x20order\x20compensation\x20funds\x20from\x20this\x20Service\x20object.'+RECEIVE_FORMAT_BLOCK_BALANCE),'owner_receive':ReceivedObjectsOrRecentlySchema['optional']()['describe']('Unwrap\x20CoinWrapper\x20objects\x20and\x20other\x20objects\x20received\x20by\x20this\x20Service\x20object\x20and\x20send\x20them\x20to\x20the\x20owner\x20of\x20its\x20Permission\x20object.'+RECEIVE_FORMAT_BLOCK_OBJECTS),'um':z['union']([NameOrAddressSchema,z['null']()])['optional']()['describe']('Contact\x20object\x20ID\x20or\x20name\x20—\x20the\x20Service\x27s\x20customer-service\x20channel.\x20'+'This\x20is\x20the\x20object\x20that\x20Messenger\x20routes\x20encrypted\x20messages\x20to\x20for\x20pre-order\x20negotiation,\x20'+'private-info\x20delivery\x20(see\x20customer_required),\x20and\x20post-sale\x20support.\x20'+'⚠️\x20REQUIRED\x20whenever\x20customer_required\x20is\x20set:\x20without\x20um,\x20the\x20customer\x27s\x20private\x20information\x20'+'has\x20no\x20channel\x20to\x20reach\x20the\x20merchant.'),'arb_statement':z['object']({'arb':NameOrAddressSchema['describe']('Arb\x20object\x20(case)\x20to\x20attach\x20the\x20statement\x20to.'),'order':NameOrAddressSchema['describe']('The\x20order\x20the\x20case\x20was\x20opened\x20against\x20—\x20must\x20belong\x20to\x20this\x20Service.'),'statement':z['string']()['max'](0xfa0)['describe']('Seller\x27s\x20text\x20statement\x20appended\x20to\x20the\x20case\x20record\x20(ArbStatementEvent).\x20'+'Event-only:\x20nothing\x20on\x20the\x20Arb\x20object\x20is\x20mutated;\x20the\x20record\x20cannot\x20be\x20rewritten\x20or\x20deleted.\x20'+'Use\x20to\x20declare\x20facts\x20or\x20report\x20the\x20customer\x27s\x20behavior\x20(e.g.\x20absence,\x20non-cooperation).\x20'+'PRIMARY\x20evidence\x20channel\x20is\x20Messenger\x20(encrypted\x20WTS\x20records\x20with\x20the\x20customer);\x20'+'this\x20is\x20the\x20SECONDARY\x20on-chain\x20declare/report\x20channel.')})['optional']()['describe']('Service\x20(defendant-side)\x20statement\x20on\x20an\x20arbitration\x20case\x20—\x20permission\x20index\x20321.\x20'+'Lets\x20the\x20Service\x20permission\x20holder\x20put\x20a\x20bounded\x20text\x20on\x20the\x20record\x20for\x20any\x20case\x20against\x20'+'an\x20order\x20of\x20this\x20service\x20WITHOUT\x20holding\x20the\x20order.\x20Callable\x20in\x20ANY\x20case\x20status.\x20'+'The\x20Arb\x27s\x20coin\x20type\x20is\x20derived\x20automatically\x20from\x20the\x20arb\x20object\x20on-chain.'),'pause':z['boolean']()['optional']()['describe']('Whether\x20to\x20pause\x20accepting\x20new\x20orders.'),'publish':z['boolean']()['optional']()['describe']('Whether\x20to\x20publish\x20the\x20Service.\x20After\x20publishing,\x20customers\x20can\x20place\x20orders.\x20'+'VERIFIED\x20against\x20Move\x20source\x20+\x20SDK\x20(4-level\x20immutability\x20matrix):\x0a'+'\x20\x20L1\x20—\x20PERMANENTLY\x20LOCKED\x20after\x20publish\x20(assert!(!bPublished),\x20no\x20pause+lock\x20exception):\x0a'+'\x20\x20\x20\x20•\x20machine\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20(workflow\x20template)\x0a'+'\x20\x20\x20\x20•\x20order_allocators\x20(fund\x20distribution\x20rules)\x0a'+'\x20\x20L2\x20—\x20TIME-LOCKED\x20after\x20publish\x20(unpublished-state\x20check\x20—\x20requires\x20pause\x20+\x20setting_lock_duration\x20elapsed):\x0a'+'\x20\x20\x20\x20•\x20arbitrations\x20remove/clear\x20(dispute\x20resolution\x20objects)\x0a'+'\x20\x20\x20\x20•\x20rewards\x20remove/clear\x20\x20\x20\x20\x20\x20\x20(reward\x20objects)\x0a'+'\x20\x20\x20\x20•\x20compensation_fund_withdraw\x20(withdraw\x20ALL\x20funds)\x0a'+'\x20\x20L3\x20—\x20REMAIN\x20MUTABLE\x20after\x20publish\x20(no\x20SDK\x20check,\x20no\x20Move\x20check):\x0a'+'\x20\x20\x20\x20•\x20arbitrations\x20add,\x20rewards\x20add\x20(no\x20assert\x20—\x20can\x20add\x20after\x20publish)\x0a'+'\x20\x20\x20\x20•\x20buy_guard,\x20sales,\x20discount,\x20description,\x20location,\x20pause,\x20repositories,\x0a'+'\x20\x20\x20\x20•\x20compensation_fund_add,\x20setting_lock_duration_add,\x20customer_required,\x20um\x20(Contact)\x0a'+'These\x202\x20L1-LOCKED\x20fields\x20(machine/order_allocators)\x20MUST\x20be\x20set\x20BEFORE\x20publish=true.\x0a'+'arbitrations/rewards\x20can\x20be\x20ADDED\x20after\x20publish\x20but\x20remove/clear\x20requires\x20pause+lock.\x0a'+'\x0a'+'⚠️\x20COMPENSATION_FUND\x20+\x20ARBITRATION\x20LINKAGE:\x0a'+'\x20\x20At\x20publish\x20time,\x20if\x20compensation_fund\x20>\x200,\x20Arbitration\x20MUST\x20be\x20bound:\x0a'+'\x20\x20\x20\x20if\x20(balance::value(&self.compensation_fund)\x20>\x200)\x20{\x0a'+'\x20\x20\x20\x20\x20\x20\x20\x20assert!(arbitration_count\x20>\x200,\x20E_ARBITRATION_NOT_SET_WITH_COMPENSATION_FUND);\x0a'+'\x20\x20\x20\x20}\x0a'+'\x20\x20The\x20MCP\x20handler\x20enforces\x20this\x20as\x20a\x20HARD\x20PRE-CHECK:\x20if\x20publish=true\x20AND\x20compensation_fund_add\x20'+'\x20\x20is\x20set\x20in\x20the\x20same\x20call\x20AND\x20arbitrations\x20is\x20empty,\x20the\x20call\x20is\x20REJECTED\x20before\x20submission.\x20'+'\x20\x20If\x20compensation_fund\x20was\x20deposited\x20in\x20a\x20prior\x20call,\x20a\x20SOFT\x20WARNING\x20is\x20issued.\x0a'+'\x0a'+'SCHEMA-03\x20/\x20P0-01\x20fix\x20—\x20DEPLOYMENT\x20WORKFLOW\x20(two-phase,\x20avoids\x20circular\x20dependency):\x0a'+'\x20\x20Phase\x201\x20—\x20CREATE\x20(no\x20publish):\x20object={name:\x27my-service\x27,\x20type_parameter,\x20permission}\x20+\x20machine\x20+\x20order_allocators\x20+\x20arbitrations.\x0a'+'\x20\x20\x20\x20NOTE:\x20buy_guard\x20can\x20use\x20a\x20LocalMark\x20NAME\x20(not\x20address)\x20to\x20break\x20the\x20Guard→Service\x20circular\x20dependency.\x0a'+'\x20\x20\x20\x20The\x20name\x20is\x20resolved\x20to\x20an\x20address\x20at\x20transaction\x20build\x20time.\x0a'+'\x20\x20Phase\x202\x20—\x20PUBLISH:\x20object=\x27my-service\x27\x20(string\x20ref)\x20+\x20publish=true.\x0a'+'\x20\x20\x20\x20All\x20L1-LOCKED\x20fields\x20must\x20be\x20set\x20in\x20Phase\x201;\x20Phase\x202\x20only\x20flips\x20the\x20publish\x20flag.\x0a'+'\x20\x20Post-publish\x20updates:\x20buy_guard,\x20sales,\x20description,\x20repositories\x20(add),\x20rewards\x20(add),\x20arbitrations\x20(add),\x20etc.')})['strict']()['describe']('On-chain\x20Service\x20operations.\x20USAGE:\x20(1)\x20CREATE\x20NEW:\x20Set\x20\x27object\x27\x20field\x20with\x20OBJECT\x20format\x20{name,\x20type_parameter,\x20permission,\x20...}\x20to\x20create\x20a\x20Service.\x20NOTE:\x20\x27name\x27\x20goes\x20INSIDE\x20\x27object\x27,\x20NOT\x20at\x20the\x20data\x20root\x20level.\x20\x27permission\x27\x20can\x20be\x20a\x20new\x20Permission\x20object\x20or\x20reference\x20an\x20existing\x20one\x20-\x20check\x20\x27object\x27\x20field\x20description\x20for\x20details.\x20(2)\x20OPERATE\x20EXISTING:\x20Set\x20\x27object\x27\x20field\x20with\x20STRING\x20format\x20(object\x20ID\x20or\x20name).\x20The\x20\x27object\x27\x20field\x20is\x20CRITICAL\x20and\x20REQUIRED\x20in\x20both\x20cases.\x20STRING\x20for\x20existing,\x20OBJECT\x20for\x20new\x20creation.');export const CallService_InputSchema=z['object']({'data':CallService_DataSchema,'env':CallEnvSchema['optional'](),'submission':SubmissionCallSchema['optional']()})['strict']();
|
|
1
|
+
import{z}from'zod';import{TypedPermissionObjectSchema,CoinParamSchema,NamedObjectSchema,ObjectsSchema,CallEnvSchema,SubmissionCallSchema}from'./base.js';import{AllocatorsSchema,DiscountTypeSchema,ServiceSaleSchema,PaymentInfoSchema}from'../query/index.js';import{AccountOrMark_AddressSchema,DescriptionSchema,LongNameSchema,ManyAccountOrMark_AddressSchema,NameOrAddressSchema,NotEmptyNameSchema,ReceivedBalanceOrRecentlySchema,ReceivedObjectsOrRecentlySchema,RECEIVE_FORMAT_BLOCK_OBJECTS,RECEIVE_FORMAT_BLOCK_BALANCE}from'../common/index.js';import{BalanceTypeSchema}from'../common/index.js';export const ServiceBuyItemSchema=z['preprocess'](a=>{if(a&&typeof a==='object'&&'stock'in a&&!('quantity'in a)){const {stock:b,...c}=a;return{...c,'quantity':b};}return a;},z['object']({'name':LongNameSchema['describe']('Name\x20of\x20the\x20product\x20or\x20service\x20to\x20purchase'),'quantity':BalanceTypeSchema['describe']('⚠️\x20PURCHASE\x20QUANTITY,\x20NOT\x20inventory.\x20This\x20is\x20the\x20number\x20of\x20units\x20you\x20are\x20'+'buying;\x20the\x20on-chain\x20order\x20total\x20=\x20sale.price\x20x\x20this\x20value.\x20Do\x20NOT\x20put\x20the\x20'+'product\x27s\x20available\x20stock\x20here\x20—\x20inventory\x20is\x20the\x20separate\x20`stock`\x20field\x20on\x20'+'the\x20Service\x27s\x20sales\x20list.\x20To\x20buy\x20one\x20unit,\x20set\x20quantity:\x201.\x20'+'(Legacy\x20callers\x20may\x20still\x20send\x20this\x20as\x20`stock`;\x20it\x20is\x20accepted\x20and\x20treated\x20'+'identically\x20as\x20the\x20purchase\x20quantity.)'),'wip_hash':z['string']()['default']('')['describe']('WIP\x20file\x20hash\x20of\x20the\x20item.\x20OMIT\x20this\x20field\x20(or\x20pass\x20empty\x20string\x20\x22\x22)\x20to\x20AUTO-FILL\x20it\x20from\x20the\x20'+'bound\x20Service\x20sale\x27s\x20wip_hash\x20—\x20the\x20on-chain\x20quote\x20then\x20verifies\x20the\x20WIP\x20file\x20matches\x20that\x20hash\x20'+'(E_WIP_HASH_NOT_MATCH\x20on\x20mismatch),\x20so\x20buyers\x20do\x20NOT\x20need\x20to\x20copy\x20any\x20hash\x20value.\x20Only\x20pass\x20an\x20'+'explicit\x20hash\x20when\x20pinning\x20a\x20value\x20seen\x20earlier:\x20that\x20protects\x20against\x20a\x20legitimate\x20merchant\x20WIP\x20'+'update\x20between\x20viewing\x20the\x20product\x20and\x20placing\x20the\x20order.')})['strict']());export const BuySchema=z['object']({'items':z['array'](ServiceBuyItemSchema)['describe']('List\x20of\x20products\x20or\x20services\x20to\x20purchase'),'total_pay':CoinParamSchema['describe']('Actual\x20payment\x20amount.\x20FORMAT:\x20{balance:\x20<amount_in_smallest_unit>}\x20or\x20{coin:\x20<coin_object_id>}.\x20'+'The\x20token\x20type\x20and\x20precision\x20are\x20determined\x20by\x20the\x20Service\x20object\x27s\x20type_parameter\x20(the\x20generic\x20type\x20set\x20when\x20the\x20Service\x20was\x20created).\x20'+'For\x20WOW\x20(9\x20decimals):\x20{balance:\x201000000000}\x20=\x201\x20WOW.\x20'),'discount':z['string']()['optional']()['describe']('Discount\x20object\x20ID\x20or\x20name'),'payment_remark':z['string']()['optional']()['describe']('Payment\x20remark'),'payment_index':z['number']()['optional']()['describe']('Payment\x20index')})['strict']();export const DiscountSchema=z['object']({'name':z['string']()['describe']('Discount\x20name'),'discount_type':DiscountTypeSchema,'discount_value':BalanceTypeSchema['describe']('Discount\x20magnitude,\x20meaning\x20depends\x20on\x20discount_type.\x20'+'RATES\x20(0):\x20per-10000\x20off\x20rate\x20—\x2010\x20=\x200.1%\x20off,\x201000\x20=\x2010%\x20off,\x2010000\x20=\x20100%\x20off;\x20values\x20above\x2010000\x20are\x20rejected.\x20'+'FIXED\x20(1):\x20fixed\x20deduction\x20from\x20the\x20order\x20total\x20in\x20the\x20Service\x20token\x27s\x20smallest\x20units\x20(e.g.\x201000000000\x20=\x201\x20WOW\x20at\x209\x20decimals).'),'benchmark':z['union']([z['number'](),z['string']()])['optional']()['describe']('Minimum\x20order\x20total\x20(in\x20the\x20Service\x20token\x27s\x20smallest\x20units)\x20for\x20the\x20discount\x20to\x20apply\x20—\x20'+'the\x20discount\x20is\x20applied\x20only\x20when\x20the\x20order\x20total\x20is\x20GREATER\x20THAN\x20OR\x20EQUAL\x20TO\x20this\x20value.\x20'+'⚠️\x20OMITTING\x20this\x20field\x20means\x20the\x20discount\x20NEVER\x20applies:\x20the\x20coupon\x20object\x20is\x20still\x20consumed\x20(destroyed)\x20'+'when\x20used,\x20but\x20the\x20order\x20total\x20is\x20unchanged.\x20To\x20make\x20a\x20discount\x20that\x20always\x20applies,\x20pass\x200.\x20'+'If\x20the\x20order\x20total\x20is\x20below\x20the\x20discounted\x20price\x20the\x20payment\x20aborts\x20—\x20pay\x20the\x20list\x20price;\x20the\x20excess\x20is\x20returned\x20as\x20a\x20new\x20Coin.'),'time_ms_start':z['number']()['optional']()['describe']('Discount\x20start\x20time\x20(milliseconds)'),'time_ms_end':z['number']()['describe']('Discount\x20end\x20time\x20(milliseconds)'),'count':z['number']()['describe']('Number\x20of\x20SEPARATE\x20Discount\x20(coupon)\x20objects\x20minted\x20—\x20total\x20delivered\x20=\x20count\x20×\x20number\x20of\x20recipients.\x20'+'Each\x20coupon\x20object\x20is\x20SINGLE-USE\x20(consumed\x20on\x20first\x20use).\x20This\x20is\x20NOT\x20a\x20per-coupon\x20reuse\x20count:\x20'+'count:2\x20creates\x202\x20independent\x20one-time\x20coupons,\x20not\x201\x20coupon\x20usable\x20twice.'),'recipient':ManyAccountOrMark_AddressSchema['describe']('Discount\x20recipient'),'transferable':z['boolean']()['describe']('Whether\x20the\x20discount\x20object\x20recipient\x20can\x20transfer\x20the\x20discount\x20object')})['strict']();export const OrderNewSchema=z['object']({'buy':BuySchema,'agents':ManyAccountOrMark_AddressSchema['optional']()['describe']('Order\x20agents.\x20Agents\x20can\x20operate\x20the\x20order,\x20such\x20as\x20canceling\x20the\x20order,\x20modifying\x20the\x20order\x20status,\x20etc.;\x20but\x20cannot\x20receive\x20the\x20funds\x20received\x20by\x20the\x20order.'),'order_required_info':z['string']()['optional']()['describe']('Contact\x20object\x20ID\x20or\x20WTS\x20Proof\x20object,\x20recorded\x20on\x20the\x20Order\x20as\x20proof\x20that\x20the\x20order\x20holder\x20'+'delivered\x20the\x20required\x20private\x20information\x20(service.customer_required)\x20to\x20the\x20merchant.\x20'+'FLOW:\x20when\x20a\x20Service\x20declares\x20customer_required\x20(e.g.\x20phone/email/shipping_address),\x20the\x20order\x20holder\x20'+'MUST\x20send\x20that\x20private\x20information\x20to\x20the\x20Service\x27s\x20Contact\x20(um)\x20via\x20end-to-end\x20encrypted\x20Messenger,\x20'+'then\x20pass\x20the\x20Contact\x20object\x20ID\x20or\x20the\x20generated\x20WTS\x20Proof\x20here\x20so\x20the\x20delivery\x20is\x20verifiable\x20on-chain.'),'transfer':AccountOrMark_AddressSchema['optional']()['describe']('Set\x20the\x20new\x20owner\x20of\x20the\x20order.\x20Requires\x20order\x20owner\x20permission\x20to\x20set.'),'namedNewOrder':NamedObjectSchema['optional']()['describe']('RECOMMENDED:\x20Set\x20a\x20local\x20name\x20for\x20the\x20newly\x20created\x20Order\x20object.\x20'+'Without\x20this,\x20the\x20Order\x20is\x20only\x20referenceable\x20by\x20its\x20on-chain\x20address.\x20'+'Example:\x20{name:\x20\x27my_order_v1\x27}\x20allows\x20subsequent\x20operations\x20to\x20use\x20\x27my_order_v1\x27\x20instead\x20of\x20the\x20address.\x20'+'PLACEMENT:\x20this\x20field\x20MUST\x20be\x20inside\x20data.order_new\x20(it\x20is\x20an\x20OrderNew\x20field)\x20—\x20putting\x20namedNewOrder\x20at\x20'+'the\x20data\x20root\x20fails\x20schema\x20validation\x20with\x20\x27Unrecognized\x20key\x27.\x20'+'MIGRATION\x20TIP:\x20for\x20batch/migration\x20order\x20creation,\x20always\x20auto-generate\x20readable\x20names\x20'+'(e.g.\x20\x27<source>_<service>_<seq>\x27\x20like\x20\x27upwork_svc_v1_0001\x27)\x20—\x20unnamed\x20orders\x20(head.name\x20=\x20null)\x20are\x20'+'only\x20address-referenceable,\x20which\x20breaks\x20downstream\x20queries,\x20displays\x20and\x20audits\x20(E-8).'),'namedNewAllocation':NamedObjectSchema['optional']()['describe']('RECOMMENDED:\x20Set\x20a\x20local\x20name\x20for\x20the\x20order\x27s\x20Allocation\x20object.\x20'+'Without\x20this,\x20the\x20Allocation\x20is\x20only\x20referenceable\x20by\x20its\x20address.\x20'+'Example:\x20{name:\x20\x27my_allocation_v1\x27}\x20allows\x20alloc_by_guard\x20to\x20reference\x20\x27my_allocation_v1\x27.'),'namedNewProgress':NamedObjectSchema['optional']()['describe']('RECOMMENDED:\x20Set\x20a\x20local\x20name\x20for\x20the\x20order\x27s\x20Progress\x20object.\x20'+'Without\x20this,\x20the\x20Progress\x20is\x20only\x20referenceable\x20by\x20its\x20address.\x20'+'Example:\x20{name:\x20\x27my_progress_v1\x27}\x20allows\x20progress\x20operations\x20to\x20use\x20\x27my_progress_v1\x27.')})['strict']();export const SalesSchema=z['discriminatedUnion']('op',[z['object']({'op':z['literal']('add'),'sales':z['array'](ServiceSaleSchema)})['strict']()['describe']('Add\x20new\x20sales\x20products\x20or\x20services.'),z['object']({'op':z['literal']('set'),'sales':z['array'](ServiceSaleSchema)})['strict']()['describe']('Replaces\x20the\x20ENTIRE\x20sales\x20list:\x20every\x20product\x20NOT\x20included\x20is\x20REMOVED\x20from\x20the\x20Service\x20'+'(its\x20stock\x20and\x20wip\x20binding\x20go\x20with\x20it).\x20To\x20change\x20ONE\x20product,\x20prefer\x20the\x20per-item\x20ops\x20'+'(price_add\x20/\x20price_reduce\x20/\x20stock_add\x20/\x20stock_reduce\x20/\x20sale_suspension)\x20over\x20re-sending\x20'+'the\x20full\x20list;\x20with\x20op:set\x20you\x20MUST\x20resend\x20ALL\x20unchanged\x20products\x20too.\x20'+'Removal\x20is\x20immediate\x20and\x20cannot\x20be\x20undone.'),z['object']({'op':z['literal']('remove'),'sales_name':z['array'](LongNameSchema['describe']('Sales\x20name'))})['strict']()['describe']('Remove\x20existing\x20sales\x20products\x20or\x20services.'),z['object']({'op':z['literal']('clear')})['strict']()['describe']('Clear\x20all\x20sales\x20products\x20or\x20services.'),z['object']({'op':z['literal']('price_add'),'sale_name':LongNameSchema['describe']('Name\x20of\x20the\x20product\x20to\x20update'),'value':BalanceTypeSchema['describe']('Price\x20INCREASE\x20delta\x20in\x20the\x20Service\x20token\x27s\x20smallest\x20units\x20(e.g.\x20100000000\x20=\x20+0.1\x20WOW).\x20'+'Added\x20to\x20the\x20current\x20price\x20(on-chain\x20saturating\x20add).\x20NOT\x20the\x20new\x20absolute\x20price.')})['strict']()['describe']('Raise\x20one\x20product\x27s\x20price\x20by\x20a\x20delta.\x20Only\x20the\x20named\x20product\x20is\x20touched;\x20'+'an\x20unknown\x20sale_name\x20is\x20silently\x20ignored\x20on-chain\x20(verify\x20with\x20query_toolkit\x20afterwards).'),z['object']({'op':z['literal']('price_reduce'),'sale_name':LongNameSchema['describe']('Name\x20of\x20the\x20product\x20to\x20update'),'value':BalanceTypeSchema['describe']('Price\x20DECREASE\x20delta\x20in\x20the\x20Service\x20token\x27s\x20smallest\x20units\x20(e.g.\x20100000000\x20=\x20-0.1\x20WOW).\x20'+'If\x20the\x20delta\x20exceeds\x20the\x20current\x20price,\x20the\x20price\x20clamps\x20to\x200.\x20NOT\x20the\x20new\x20absolute\x20price.')})['strict']()['describe']('Lower\x20one\x20product\x27s\x20price\x20by\x20a\x20delta.\x20Only\x20the\x20named\x20product\x20is\x20touched;\x20'+'an\x20unknown\x20sale_name\x20is\x20silently\x20ignored\x20on-chain\x20(verify\x20with\x20query_toolkit\x20afterwards).'),z['object']({'op':z['literal']('stock_add'),'sale_name':LongNameSchema['describe']('Name\x20of\x20the\x20product\x20to\x20update'),'value':BalanceTypeSchema['describe']('Stock\x20INCREASE\x20delta\x20(a\x20unit\x20COUNT,\x20not\x20money),\x20e.g.\x2050\x20=\x20+50\x20units.')})['strict']()['describe']('Restock\x20one\x20product\x20by\x20a\x20delta.\x20Only\x20the\x20named\x20product\x20is\x20touched;\x20'+'an\x20unknown\x20sale_name\x20is\x20silently\x20ignored\x20on-chain\x20(verify\x20with\x20query_toolkit\x20afterwards).'),z['object']({'op':z['literal']('stock_reduce'),'sale_name':LongNameSchema['describe']('Name\x20of\x20the\x20product\x20to\x20update'),'value':BalanceTypeSchema['describe']('Stock\x20DECREASE\x20delta\x20(a\x20unit\x20COUNT,\x20not\x20money),\x20e.g.\x2010\x20=\x20-10\x20units.\x20'+'If\x20the\x20delta\x20exceeds\x20current\x20stock,\x20the\x20stock\x20clamps\x20to\x200\x20(product\x20becomes\x20unsellable).')})['strict']()['describe']('Reduce\x20one\x20product\x27s\x20stock\x20by\x20a\x20delta\x20(e.g.\x20write-off\x20damaged\x20units).\x20'+'Only\x20the\x20named\x20product\x20is\x20touched;\x20an\x20unknown\x20sale_name\x20is\x20silently\x20ignored\x20on-chain.'),z['object']({'op':z['literal']('sale_suspension'),'sale_name':LongNameSchema['describe']('Name\x20of\x20the\x20product\x20to\x20suspend\x20or\x20resume'),'suspension':z['boolean']()['describe']('true\x20=\x20suspend\x20the\x20product\x20(buy/quote\x20abort\x20with\x20E_SALE_SUSPENDED);\x20false\x20=\x20resume\x20selling.')})['strict']()['describe']('Suspend\x20or\x20resume\x20ONE\x20product\x20without\x20removing\x20it\x20(keeps\x20price/stock/WIP\x20binding).\x20'+'The\x20Amazon-style\x20\x27out\x20of\x20stock\x20/\x20listing\x20inactive\x27\x20state.\x20Only\x20the\x20named\x20product\x20is\x20touched;\x20'+'an\x20unknown\x20sale_name\x20is\x20silently\x20ignored\x20on-chain\x20(verify\x20with\x20query_toolkit\x20afterwards).')]);export const CallService_DataSchema=z['object']({'object':TypedPermissionObjectSchema,'order_new':OrderNewSchema['optional']()['describe']('Create\x20new\x20order.'),'description':DescriptionSchema['optional'](),'location':LongNameSchema['optional']()['describe']('The\x20service\x20area\x20and\x20scope\x20as\x20stated\x20by\x20the\x20merchant.\x20'+'IMPORTANT:\x20If\x20the\x20service\x20has\x20a\x20geographic\x20scope,\x20ALWAYS\x20specify\x20this\x20field.\x20'+'Use\x20a\x20complete\x20hierarchical\x20address\x20'+'(e.g.\x20\x27US\x20→\x20California\x20→\x20Los\x20Angeles\x20→\x20Koreatown\x27).\x20'+'If\x20only\x20a\x20partial\x20location\x20is\x20known,\x20EXPAND\x20it\x20to\x20the\x20full\x20standardized\x20form\x20'+'(country\x20→\x20province/state\x20→\x20city\x20→\x20district,\x20worldwide)\x20—\x20when\x20ambiguous,\x20offer\x202-4\x20candidate\x20completions\x20and\x20let\x20the\x20user\x20pick.'),'sales':SalesSchema['optional']()['describe']('Service\x20sales\x20products\x20or\x20services\x20list.\x20'+'⚠️\x20WIP\x20NETWORK-DEPLOYMENT\x20RULE:\x20a\x20non-empty\x20sale.wip\x20MUST\x20be\x20a\x20publicly\x20reachable\x20URL\x20'+'(GitHub\x20Pages\x20/\x20IPFS\x20/\x20your\x20own\x20website).\x20The\x20URL\x20is\x20stored\x20ON-CHAIN\x20and\x20every\x20customer\x20'+'fetches\x20it\x20at\x20order\x20time\x20—\x20a\x20local\x20file\x20path,\x20localhost/loopback\x20URL,\x20or\x20LAN\x20private-IP\x20URL\x20'+'is\x20unreachable\x20by\x20customers\x20on\x20other\x20machines\x20and\x20aborts\x20order_new\x20100%.\x20Local-network\x20URLs\x20'+'are\x20INTERNAL\x20TEST\x20USE\x20ONLY\x20(env.network\x20=\x20localnet).\x20Leave\x20sale.wip\x20empty\x20(\x22\x22)\x20to\x20skip\x20'+'WIP\x20verification\x20(TESTING\x20ONLY).'),'repositories':ObjectsSchema['optional']()['describe']('Service\x20Repository\x20object\x20list.'),'rewards':ObjectsSchema['optional']()['describe']('Service\x20Reward\x20object\x20list.\x20'+'May\x20share\x20the\x20Service\x27s\x20Permission\x20(no\x20conflict\x20check\x20—\x20intentional:\x20rewards\x20are\x20the\x20provider\x27s\x20own\x20'+'incentive\x20tool;\x20only\x20Arbitration\x20requires\x20a\x20different\x20Permission\x20for\x20neutrality).'),'arbitrations':ObjectsSchema['optional']()['describe']('Service\x20Arbitration\x20object\x20list.\x20'+'FORMAT:\x20same\x20as\x20repositories\x20—\x20use\x20the\x20`objects`\x20field\x20name\x20inside\x20the\x20operation\x20data.\x20'+'Example:\x20{arbitrations:\x20[{name:\x20\x27my_arb_1\x27},\x20{name:\x20\x27my_arb_2\x27}]}.\x20'+'Each\x20item\x20is\x20a\x20NameOrAddress\x20(object\x20ID\x20or\x20local\x20mark\x20name).\x20'+'⚠️\x20PERMISSION\x20RULE\x20(contract-enforced):\x20every\x20Arbitration\x20bound\x20here\x20'+'MUST\x20use\x20a\x20Permission\x20object\x20DIFFERENT\x20from\x20THIS\x20Service\x27s\x20permission\x20—\x20binding\x20an\x20Arbitration\x20that\x20shares\x20'+'the\x20Service\x27s\x20Permission\x20aborts\x20with\x20E_ARBITRATION_PERMISSION_CONFLICT\x20(error\x2033).\x20'+'Create\x20a\x20dedicated\x20Permission\x20for\x20each\x20Arbitration\x20BEFORE\x20binding.\x20'+'DESIGN\x20RATIONALE\x20(confirmed\x20intentional):\x20dispute\x20resolution\x20requires\x20NEUTRALITY\x20—\x20an\x20Arbitration\x20controlled\x20'+'by\x20the\x20same\x20Permission\x20admins\x20as\x20the\x20Service\x20it\x20judges\x20would\x20be\x20a\x20conflict\x20of\x20interest.\x20ONLY\x20Arbitration\x20has\x20'+'this\x20check:\x20Reward\x20and\x20Treasury\x20objects\x20MAY\x20share\x20the\x20Service\x27s\x20Permission\x20(they\x20are\x20the\x20provider\x27s\x20own\x20tools).'),'machine':z['union']([NameOrAddressSchema,z['null']()])['optional']()['describe']('Service\x20Machine\x20object\x20ID\x20or\x20name.\x20The\x20Machine\x20object\x20must\x20be\x20in\x20published\x20state.'),'discount':DiscountSchema['optional']()['describe']('Issue\x20discount.'),'discount_destroy':z['array'](NameOrAddressSchema)['optional']()['describe']('Destroy\x20existing\x20discount\x20object\x20ID\x20list.'),'customer_required':z['array'](NotEmptyNameSchema)['optional']()['describe']('Customer\x20required\x20information\x20labels.\x20Such\x20as\x20phone,\x20email,\x20shipping_address,\x20etc.\x20'+'⚠️\x20HARD\x20LINKAGE\x20(SDK-enforced):\x20if\x20customer_required\x20is\x20set\x20(non-empty),\x20the\x20Service\x20MUST\x20also\x20bind\x20a\x20'+'Contact\x20via\x20`um`\x20—\x20otherwise\x20the\x20customer\x27s\x20private\x20information\x20cannot\x20be\x20delivered\x20through\x20end-to-end\x20'+'encrypted\x20Messenger\x20(which\x20routes\x20to\x20the\x20Contact\x20bound\x20as\x20um).\x20Set\x20`um`\x20together\x20with\x20customer_required.'),'order_allocators':z['union']([AllocatorsSchema,z['null']()])['optional']()['describe']('Order\x20fund\x20allocator.\x20Max\x20100\x20allocators\x20(MAX_ALLOCATOR_COUNT).\x20'+'Each\x20allocator\x20has\x20a\x20guard\x20(first\x20matching\x20guard\x20wins)\x20and\x20a\x20sharing\x20list.\x20'+'Set\x20to\x20null\x20to\x20clear.\x20'+'⚠️\x20PERMANENTLY\x20IMMUTABLE\x20after\x20publish:\x20order_allocators\x20can\x20ONLY\x20be\x20set\x20BEFORE\x20publish=true\x20'+'(on-chain\x20check\x20rejects\x20after\x20publish\x20—\x20E_ALREADY_PUBLISHED).\x20'+'After\x20publish,\x20the\x20ONLY\x20way\x20to\x20change\x20allocation\x20rules\x20is\x20to\x20create\x20a\x20NEW\x20Service\x20object.\x20'+'There\x20is\x20NO\x20pause+lock\x20exception\x20for\x20order_allocators\x20(unlike\x20arbitrations/rewards\x20which\x20have\x20time-lock\x20removal).\x20'+'PRE-PUBLISH\x20CHECKLIST:\x20verify\x20all\x20guard\x20names\x20resolve,\x20all\x20sharing\x20amounts\x20are\x20correct,\x20'+'threshold\x20is\x20set,\x20and\x20recipient\x20types\x20(Entity/Signer/GuardIdentifier)\x20are\x20intended\x20before\x20calling\x20publish=true.\x20'+'GuardIdentifier\x20sharing\x20mode:\x20{who:\x20{GuardIdentifier:\x20<u8>},\x20sharing:\x20<rate>,\x20mode:\x20\x27Rate\x27}\x20—\x20'+'resolves\x20recipient\x20from\x20the\x20Guard\x20table\x20submission\x20at\x20allocation\x20time.\x20BINDING\x20SEMANTICS\x20(contract-enforced,\x20abort\x20code\x2015):\x20'+'in\x20a\x20Service-created\x20Allocation\x20EVERY\x20GuardIdentifier\x20submission\x20must\x20equal\x20the\x20PAYING\x20order\x20—\x20it\x20is\x20always\x20\x27the\x20order\x27,\x20'+'never\x20a\x20third\x20party\x20whose\x20address\x20is\x20supplied\x20at\x20trigger\x20time;\x20use\x20{who:{Entity:...}}\x20for\x20named\x20parties.\x20'+'Canonical\x20order\x20pattern:\x20the\x20recipient\x20slot\x20is\x20the\x20single\x20'+'submitted\x20Order\x20(constrained\x20by\x20the\x20Guard\x20—\x20service\x20binding,\x20qualifying\x20node,\x20signer==order.owner);\x20funds\x20land\x20at\x20that\x20order\x20object\x20and\x20'+'are\x20receivable\x20only\x20by\x20its\x20owner\x20(object\x20receipt\x20=\x20owner\x20receipt).\x20Safety\x20is\x20determined\x20by\x20constraint\x20sufficiency\x20—\x20run\x20the\x20recipient\x20'+'constraint\x20audit\x20before\x20publish.\x20Fixed\x20recipients\x20should\x20use\x20{who:{Entity:...}};\x20unbound\x20Signer\x20recipients\x20are\x20a\x20CRITICAL\x20theft\x20risk.\x20'+'MULTI-CALL\x20ALLOCATION:\x20an\x20allocation\x20can\x20be\x20executed\x20MULTIPLE\x20times\x20(no\x20consumed\x20flag\x20in\x20contract).\x20'+'Use\x20Amount\x20mode\x20(not\x20Surplus)\x20for\x20recurring\x20allocations\x20—\x20Surplus\x20calls\x20balance::withdraw_all\x20which\x20drains\x20the\x20balance.\x20'+'For\x20monthly\x20payment\x20scenarios,\x20create\x20multiple\x20Allocators\x20with\x20time-based\x20Guards\x20+\x20Amount\x20mode\x20sharing\x20items.'),'buy_guard':z['union']([NameOrAddressSchema,z['null']()])['optional']()['describe']('Buy\x20guard\x20object\x20ID\x20or\x20name.'),'compensation_fund_add':CoinParamSchema['optional']()['describe']('Deposit\x20funds\x20into\x20the\x20Service\x20compensation_fund.\x20Used\x20to\x20pay\x20indemnity\x20when\x20arbitration\x20resolves\x20in\x20customer\x27s\x20favor.\x20'+'FORMAT:\x20{balance:\x20<amount_in_smallest_unit>}\x20—\x20the\x20field\x20name\x20is\x20\x27balance\x27\x20(NOT\x20\x27amount\x27).\x20'+'The\x20token\x20type\x20and\x20precision\x20are\x20determined\x20by\x20the\x20Service\x20object\x27s\x20type_parameter\x20(the\x20generic\x20type\x20set\x20when\x20the\x20Service\x20was\x20created).\x20'+'For\x20WOW\x20(9\x20decimals):\x20{balance:\x201000000000}\x20=\x201\x20WOW.\x20'+'For\x20tokens\x20with\x20different\x20decimals,\x20adjust\x20accordingly\x20(e.g.\x20USDC\x20has\x206\x20decimals,\x20so\x20{balance:\x201000000}\x20=\x201\x20USDC).\x20'+'REQUIRES:\x20Permission\x20index\x20315\x20(SERVICE_COMPENSATION_FUND_DEPOSIT)\x20must\x20be\x20granted\x20to\x20the\x20calling\x20account\x20first.\x20'+'COMMON\x20MISTAKE:\x20using\x20{amount:\x20...}\x20or\x20{amount:\x20...,\x20type:\x20\x27WOW\x27}\x20—\x20these\x20will\x20fail.\x20The\x20correct\x20field\x20is\x20\x27balance\x27.'),'compensation_fund_withdraw':z['object']({'receipt':AccountOrMark_AddressSchema['describe']('Receipt\x20address\x20that\x20will\x20receive\x20the\x20withdrawn\x20funds\x20(as\x20a\x20new\x20Payment\x20object)'),'payment_info':PaymentInfoSchema['describe']('Payment\x20info\x20for\x20the\x20new\x20Payment\x20object\x20created\x20to\x20hold\x20the\x20withdrawn\x20funds')})['strict']()['optional']()['describe']('Withdraw\x20ALL\x20funds\x20from\x20the\x20compensation_fund\x20to\x20a\x20new\x20Payment\x20object\x20owned\x20by\x20`receipt`.\x20'+'REQUIRES:\x20Service\x20must\x20be\x20paused\x20AND\x20setting_lock_duration\x20must\x20have\x20elapsed\x20since\x20pause\x20(the\x20unpublished-state\x20check).\x20'+'Withdraws\x20the\x20ENTIRE\x20compensation_fund\x20balance\x20via\x20balance::withdraw_all.\x20'+'DIFFERENT\x20from\x20the\x20order-side\x20compensation\x20claim\x20(for\x20arbitration-winning\x20users,\x20no\x20pause+lock\x20required).'),'setting_lock_duration_add':z['number']()['optional']()['describe']('Additional\x20lock\x20duration\x20to\x20ADD\x20to\x20\x27setting_lock_duration\x27\x20(Move\x20field\x20name).\x20'+'UNIT:\x20milliseconds\x20(ms).\x20Example:\x202592000000\x20=\x2030\x20days,\x207776000000\x20=\x2090\x20days,\x2086400000\x20=\x201\x20day.\x20'+'DEFAULT:\x202592000000\x20(30\x20days,\x20DEFAULT_LOCK_DURATION).\x20This\x20is\x20the\x20initial\x20value\x20when\x20a\x20Service\x20is\x20created.\x20'+'Behavior:\x20additive\x20(safe_add)\x20—\x20only\x20increases,\x20never\x20decreases.\x20'+'Can\x20be\x20called\x20BEFORE\x20or\x20AFTER\x20publish\x20(no\x20publish\x20check).\x20'+'Affects\x20the\x20waiting\x20time\x20required\x20by:\x20compensation_fund_withdraw,\x20arbitrations\x20remove/clear,\x20rewards\x20remove/clear\x20'+'(all\x20require\x20pause\x20+\x20setting_lock_duration\x20elapsed\x20since\x20pause).'),'compensation_fund_receive':ReceivedBalanceOrRecentlySchema['optional']()['describe']('Receive\x20order\x20compensation\x20funds\x20from\x20this\x20Service\x20object.'+RECEIVE_FORMAT_BLOCK_BALANCE),'owner_receive':ReceivedObjectsOrRecentlySchema['optional']()['describe']('Unwrap\x20CoinWrapper\x20objects\x20and\x20other\x20objects\x20received\x20by\x20this\x20Service\x20object\x20and\x20send\x20them\x20to\x20the\x20owner\x20of\x20its\x20Permission\x20object.'+RECEIVE_FORMAT_BLOCK_OBJECTS),'um':z['union']([NameOrAddressSchema,z['null']()])['optional']()['describe']('Contact\x20object\x20ID\x20or\x20name\x20—\x20the\x20Service\x27s\x20customer-service\x20channel.\x20'+'This\x20is\x20the\x20object\x20that\x20Messenger\x20routes\x20encrypted\x20messages\x20to\x20for\x20pre-order\x20negotiation,\x20'+'private-info\x20delivery\x20(see\x20customer_required),\x20and\x20post-sale\x20support.\x20'+'⚠️\x20REQUIRED\x20whenever\x20customer_required\x20is\x20set:\x20without\x20um,\x20the\x20customer\x27s\x20private\x20information\x20'+'has\x20no\x20channel\x20to\x20reach\x20the\x20merchant.'),'arb_statement':z['object']({'arb':NameOrAddressSchema['describe']('Arb\x20object\x20(case)\x20to\x20attach\x20the\x20statement\x20to.'),'order':NameOrAddressSchema['describe']('The\x20order\x20the\x20case\x20was\x20opened\x20against\x20—\x20must\x20belong\x20to\x20this\x20Service.'),'statement':z['string']()['max'](0xfa0)['describe']('Seller\x27s\x20text\x20statement\x20appended\x20to\x20the\x20case\x20record\x20(ArbStatementEvent).\x20'+'Event-only:\x20nothing\x20on\x20the\x20Arb\x20object\x20is\x20mutated;\x20the\x20record\x20cannot\x20be\x20rewritten\x20or\x20deleted.\x20'+'Use\x20to\x20declare\x20facts\x20or\x20report\x20the\x20customer\x27s\x20behavior\x20(e.g.\x20absence,\x20non-cooperation).\x20'+'PRIMARY\x20evidence\x20channel\x20is\x20Messenger\x20(encrypted\x20WTS\x20records\x20with\x20the\x20customer);\x20'+'this\x20is\x20the\x20SECONDARY\x20on-chain\x20declare/report\x20channel.')})['optional']()['describe']('Service\x20(defendant-side)\x20statement\x20on\x20an\x20arbitration\x20case\x20—\x20permission\x20index\x20321.\x20'+'Lets\x20the\x20Service\x20permission\x20holder\x20put\x20a\x20bounded\x20text\x20on\x20the\x20record\x20for\x20any\x20case\x20against\x20'+'an\x20order\x20of\x20this\x20service\x20WITHOUT\x20holding\x20the\x20order.\x20Callable\x20in\x20ANY\x20case\x20status.\x20'+'The\x20Arb\x27s\x20coin\x20type\x20is\x20derived\x20automatically\x20from\x20the\x20arb\x20object\x20on-chain.'),'pause':z['boolean']()['optional']()['describe']('Whether\x20to\x20pause\x20accepting\x20new\x20orders.'),'publish':z['boolean']()['optional']()['describe']('Whether\x20to\x20publish\x20the\x20Service.\x20After\x20publishing,\x20customers\x20can\x20place\x20orders.\x20'+'⚠️\x20PRE-PUBLISH\x20EVALUATION\x20(mandatory,\x20stop-node\x20fund-exit\x20coverage):\x20service.allocators\x20MUST\x20cover\x20EVERY\x20stop\x20node\x20of\x20the\x20bound\x20Machine\x20—\x20every\x20node\x20where\x20an\x20order\x20can\x20rest\x20(terminal\x20nodes\x20AND\x20waiting\x20states:\x20review\x20windows,\x20handovers,\x20open\x20disputes)\x20needs\x20BOTH\x20a\x20withdrawal\x20(release)\x20AND\x20a\x20refund\x20allocation\x20rule,\x20and\x20each\x20mapping\x20guard\x20must\x20be\x20satisfiable\x20in\x20BOTH\x20directions.\x20An\x20uncovered\x20stop\x20node\x20strands\x20escrowed\x20funds\x20permanently\x20(order_allocators\x20is\x20L1-immutable).\x20Review-gated\x20release\x20is\x20a\x20TIME\x20VARIANT\x20inside\x20ONE\x20exit\x20guard\x20(\x27reviewed\x20OR\x20unreviewed\x20after\x20T\x27),\x20never\x20parallel\x20outgoing\x20edges\x20(race\x20deadlock).\x20See\x20pattern.fund_flow_stop_node_coverage\x20+\x20rules\x20R-M5-03\x20/\x20R-M5-09.\x20'+'VERIFIED\x20against\x20Move\x20source\x20+\x20SDK\x20(4-level\x20immutability\x20matrix):\x0a'+'\x20\x20L1\x20—\x20PERMANENTLY\x20LOCKED\x20after\x20publish\x20(assert!(!bPublished),\x20no\x20pause+lock\x20exception):\x0a'+'\x20\x20\x20\x20•\x20machine\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20(workflow\x20template)\x0a'+'\x20\x20\x20\x20•\x20order_allocators\x20(fund\x20distribution\x20rules)\x0a'+'\x20\x20L2\x20—\x20TIME-LOCKED\x20after\x20publish\x20(unpublished-state\x20check\x20—\x20requires\x20pause\x20+\x20setting_lock_duration\x20elapsed):\x0a'+'\x20\x20\x20\x20•\x20arbitrations\x20remove/clear\x20(dispute\x20resolution\x20objects)\x0a'+'\x20\x20\x20\x20•\x20rewards\x20remove/clear\x20\x20\x20\x20\x20\x20\x20(reward\x20objects)\x0a'+'\x20\x20\x20\x20•\x20compensation_fund_withdraw\x20(withdraw\x20ALL\x20funds)\x0a'+'\x20\x20L3\x20—\x20REMAIN\x20MUTABLE\x20after\x20publish\x20(no\x20SDK\x20check,\x20no\x20Move\x20check):\x0a'+'\x20\x20\x20\x20•\x20arbitrations\x20add,\x20rewards\x20add\x20(no\x20assert\x20—\x20can\x20add\x20after\x20publish)\x0a'+'\x20\x20\x20\x20•\x20buy_guard,\x20sales,\x20discount,\x20description,\x20location,\x20pause,\x20repositories,\x0a'+'\x20\x20\x20\x20•\x20compensation_fund_add,\x20setting_lock_duration_add,\x20customer_required,\x20um\x20(Contact)\x0a'+'These\x202\x20L1-LOCKED\x20fields\x20(machine/order_allocators)\x20MUST\x20be\x20set\x20BEFORE\x20publish=true.\x0a'+'arbitrations/rewards\x20can\x20be\x20ADDED\x20after\x20publish\x20but\x20remove/clear\x20requires\x20pause+lock.\x0a'+'\x0a'+'⚠️\x20COMPENSATION_FUND\x20+\x20ARBITRATION\x20LINKAGE:\x0a'+'\x20\x20At\x20publish\x20time,\x20if\x20compensation_fund\x20>\x200,\x20Arbitration\x20MUST\x20be\x20bound:\x0a'+'\x20\x20\x20\x20if\x20(balance::value(&self.compensation_fund)\x20>\x200)\x20{\x0a'+'\x20\x20\x20\x20\x20\x20\x20\x20assert!(arbitration_count\x20>\x200,\x20E_ARBITRATION_NOT_SET_WITH_COMPENSATION_FUND);\x0a'+'\x20\x20\x20\x20}\x0a'+'\x20\x20The\x20MCP\x20handler\x20enforces\x20this\x20as\x20a\x20HARD\x20PRE-CHECK:\x20if\x20publish=true\x20AND\x20compensation_fund_add\x20'+'\x20\x20is\x20set\x20in\x20the\x20same\x20call\x20AND\x20arbitrations\x20is\x20empty,\x20the\x20call\x20is\x20REJECTED\x20before\x20submission.\x20'+'\x20\x20If\x20compensation_fund\x20was\x20deposited\x20in\x20a\x20prior\x20call,\x20a\x20SOFT\x20WARNING\x20is\x20issued.\x0a'+'\x0a'+'SCHEMA-03\x20/\x20P0-01\x20fix\x20—\x20DEPLOYMENT\x20WORKFLOW\x20(two-phase,\x20avoids\x20circular\x20dependency):\x0a'+'\x20\x20Phase\x201\x20—\x20CREATE\x20(no\x20publish):\x20object={name:\x27my-service\x27,\x20type_parameter,\x20permission}\x20+\x20machine\x20+\x20order_allocators\x20+\x20arbitrations.\x0a'+'\x20\x20\x20\x20NOTE:\x20buy_guard\x20can\x20use\x20a\x20LocalMark\x20NAME\x20(not\x20address)\x20to\x20break\x20the\x20Guard→Service\x20circular\x20dependency.\x0a'+'\x20\x20\x20\x20The\x20name\x20is\x20resolved\x20to\x20an\x20address\x20at\x20transaction\x20build\x20time.\x0a'+'\x20\x20Phase\x202\x20—\x20PUBLISH:\x20object=\x27my-service\x27\x20(string\x20ref)\x20+\x20publish=true.\x0a'+'\x20\x20\x20\x20All\x20L1-LOCKED\x20fields\x20must\x20be\x20set\x20in\x20Phase\x201;\x20Phase\x202\x20only\x20flips\x20the\x20publish\x20flag.\x0a'+'\x20\x20Post-publish\x20updates:\x20buy_guard,\x20sales,\x20description,\x20repositories\x20(add),\x20rewards\x20(add),\x20arbitrations\x20(add),\x20etc.')})['strict']()['describe']('On-chain\x20Service\x20operations.\x20USAGE:\x20(1)\x20CREATE\x20NEW:\x20Set\x20\x27object\x27\x20field\x20with\x20OBJECT\x20format\x20{name,\x20type_parameter,\x20permission,\x20...}\x20to\x20create\x20a\x20Service.\x20NOTE:\x20\x27name\x27\x20goes\x20INSIDE\x20\x27object\x27,\x20NOT\x20at\x20the\x20data\x20root\x20level.\x20\x27permission\x27\x20can\x20be\x20a\x20new\x20Permission\x20object\x20or\x20reference\x20an\x20existing\x20one\x20-\x20check\x20\x27object\x27\x20field\x20description\x20for\x20details.\x20(2)\x20OPERATE\x20EXISTING:\x20Set\x20\x27object\x27\x20field\x20with\x20STRING\x20format\x20(object\x20ID\x20or\x20name).\x20The\x20\x27object\x27\x20field\x20is\x20CRITICAL\x20and\x20REQUIRED\x20in\x20both\x20cases.\x20STRING\x20for\x20existing,\x20OBJECT\x20for\x20new\x20creation.');export const CallService_InputSchema=z['object']({'data':CallService_DataSchema,'env':CallEnvSchema['optional'](),'submission':SubmissionCallSchema['optional']()})['strict']();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{z}from'zod';import{isValidAddress,ValueType as a375a,ObjectType as a375b,ENTRYPOINT,isValidWowAddress,isValidName,isValidDescription,MAX_DESCRIPTION_LENGTH,isValidLongName,MAX_LONG_NAME_LENGTH,MAX_NAME_LENGTH}from'@wowok/wowok';const isValidMoveIdentifier=a=>{if(a['length']===0x0)return![];const b=a[0x0];if(b==='_')return a['length']>0x1&&/^[a-zA-Z0-9_]+$/['test'](a['slice'](0x1));if(/^[a-zA-Z]$/['test'](b))return/^[a-zA-Z0-9_]*$/['test'](a['slice'](0x1));return![];};export const DescriptionSchema=z['string']()['trim']()['refine'](isValidDescription,{'message':'Description\x20string\x20(max\x20'+MAX_DESCRIPTION_LENGTH+'\x20bcs\x20characters)'})['describe']('Description\x20string\x20(max\x20'+MAX_DESCRIPTION_LENGTH+'\x20bcs\x20characters)');export const LongNameSchema=z['string']()['refine'](isValidLongName,{'message':'max\x20'+MAX_LONG_NAME_LENGTH+'\x20bcs\x20characters'});export const WowAddressSchema=z['string']()['refine'](isValidAddress,{'message':'Invalid\x20ID\x20format:\x20must\x20be\x20\x270x\x27\x20prefix\x20followed\x20by\x2064\x20hex\x20characters'})['describe']('Valid\x20ID:\x200x\x20prefix\x20+\x2064\x20hex\x20characters,\x20or\x20builtin\x20ID\x20(0x5-0x9,\x200xa,\x200xc,\x200xd,\x200x403,\x200xaaa,\x200xaab,\x200xacc)');const WOW_TOKEN_TYPE='0x2::wow::WOW';export const TokenTypeSchema=z['string']()['refine'](a=>{if(a===WOW_TOKEN_TYPE)return!![];const b=a['split']('::');if(b['length']!==0x3)return![];const [c,d,e]=b;if(!isValidWowAddress(c))return![];if(!isValidMoveIdentifier(d))return![];if(!isValidMoveIdentifier(e))return![];return!![];},{'message':'Invalid\x20token\x20type\x20format.\x20Expected:\x20{address}::{module}::{struct}\x20where\x20address\x20is\x200x+64hex,\x20module/struct\x20are\x20valid\x20Move\x20identifiers,\x20or\x20\x270x2::wow::WOW\x27'})['describe']('Token\x20type\x20in\x20format:\x20{address}::{module}::{struct}.\x20e.g.\x20\x270x2::wow::WOW\x27\x20(WOW),\x20\x270x...::usdt::USDT\x27\x20(USDT),\x20\x270x...::eth::ETH\x27\x20(ETH).\x20To\x20discover\x20all\x20available\x20tokens\x20and\x20their\x20type\x20tags,\x20query\x20\x27mainnet\x20bridge\x20tokens\x27\x20via\x20wowok_buildin_info\x20and\x20use\x20the\x20returned\x20`wowTypeTag`\x20here.\x20NOTE:\x20testnet\x20has\x20ONLY\x20WOW\x20(no\x20stablecoins\x20are\x20bridged)\x20—\x20non-WOW\x20tokens\x20are\x20a\x20mainnet\x20capability;\x20the\x20token\x20is\x20fixed\x20at\x20object\x20creation\x20and\x20prices/orders\x20settle\x20in\x20it.');export const TokenTypeWithDefaultSchema=TokenTypeSchema['default'](WOW_TOKEN_TYPE)['describe']('Token\x20type\x20in\x20format:\x20{address}::{module}::{struct}.\x20Default:\x20\x270x2::wow::WOW\x27.\x20Other\x20examples:\x20\x270x...::usdt::USDT\x27\x20(USDT),\x20\x270x...::eth::ETH\x27\x20(ETH).\x20To\x20discover\x20all\x20available\x20tokens\x20and\x20their\x20type\x20tags,\x20query\x20\x27mainnet\x20bridge\x20tokens\x27\x20via\x20wowok_buildin_info\x20and\x20use\x20the\x20returned\x20`wowTypeTag`\x20here.\x20NOTE:\x20testnet\x20has\x20ONLY\x20WOW\x20(no\x20stablecoins\x20are\x20bridged)\x20—\x20non-WOW\x20tokens\x20are\x20a\x20mainnet\x20capability;\x20the\x20token\x20is\x20fixed\x20at\x20object\x20creation\x20and\x20prices/orders\x20settle\x20in\x20it.');export const NameSchema=z['string']()['refine'](isValidName,'Name\x20string\x20(max\x2064\x20bcs\x20characters,\x20must\x20not\x20start\x20with\x20\x270x\x27)');export const NotEmptyNameSchema=z['string']()['nonempty']()['refine'](isValidName,'Name\x20string\x20(at\x20least\x201\x20character,\x20max\x20length\x2064\x20bcs\x20characters)');export const NameOrAddressSchema=z['string']()['refine'](a=>{if(isValidAddress(a))return!![];if(isValidName(a))return!![];return![];},{'message':'Invalid\x20ID\x20format:\x20must\x20be\x20\x270x\x27\x20prefix,\x20or\x20a\x20builtin\x20ID\x20(0x5-0x9,\x200xa,\x200xc,\x200xd,\x200x403,\x200xaaa,\x200xaab,\x200xacc)'})['describe']('Account/Object\x20name\x20or\x20ID.\x20If\x20specifying\x20an\x20account,\x20use\x20empty\x20string\x20\x27\x27\x20for\x20the\x20default\x20account.\x20'+'If\x20it\x20starts\x20with\x20\x270x\x27,\x20it\x20will\x20be\x20treated\x20as\x20an\x20ID.\x20'+'Otherwise,\x20it\x20will\x20be\x20treated\x20as\x20a\x20name\x20(max\x2064\x20bcs\x20characters).');export const AccountOrMark_AddressSchema=z['object']({'name_or_address':NameOrAddressSchema['optional'](),'local_mark_first':z['boolean']()['optional']()['describe']('Whether\x20to\x20prioritize\x20local\x20marks,\x20if\x20true,\x20prioritize\x20local\x20marks,\x20otherwise\x20prioritize\x20global\x20marks')})['strict']()['describe']('Account\x20or\x20address\x20lookup\x20object.\x20Use\x20this\x20to\x20specify\x20which\x20account\x20to\x20use\x20for\x20an\x20operation.\x20'+'EXAMPLE:\x20{\x20name_or_address:\x20\x27testor2\x27\x20}\x20-\x20looks\x20up\x20account\x20by\x20name;\x20'+'EXAMPLE:\x20{\x20name_or_address:\x20\x270x1234...\x27\x20}\x20-\x20uses\x20address\x20directly;\x20'+'If\x20name_or_address\x20is\x20empty\x20string\x20\x27\x27,\x20uses\x20the\x20default\x20local\x20account.');export const ManyAccountOrMark_AddressSchema=z['object']({'entities':z['array'](AccountOrMark_AddressSchema),'check_all_founded':z['boolean']()['default'](!![])['describe']('Whether\x20to\x20check\x20all\x20entities\x20are\x20found.\x20Defaults\x20to\x20true:\x20abort\x20and\x20throw\x20if\x20ANY\x20entity\x20cannot\x20be\x20resolved.\x20Set\x20false\x20only\x20when\x20partial\x20resolution\x20is\x20explicitly\x20intended\x20(only\x20found\x20IDs\x20are\x20returned)')})['strict']()['describe']('Used\x20to\x20batch\x20find\x20account\x20or\x20object\x20IDs\x20by\x20name');export const AccountOrMark_AddressAISchema=z['union']([NameOrAddressSchema['transform'](a=>({'name_or_address':a,'local_mark_first':!![]}))['describe']('Account\x20name,\x20address\x20(0x...),\x20or\x20mark\x20name.\x20'+'When\x20using\x20string\x20format,\x20local\x20marks\x20are\x20searched\x20first.\x20'+'EXAMPLE:\x20\x27alice\x27\x20-\x20searches\x20local\x20marks\x20first,\x20then\x20global;\x20'+'EXAMPLE:\x20\x270x2...\x27\x20(64\x20hex\x20chars)\x20-\x20uses\x20address\x20directly;\x20'+'EXAMPLE:\x20\x27\x27\x20-\x20uses\x20the\x20default\x20local\x20account'),AccountOrMark_AddressSchema])['describe']('Account\x20or\x20address\x20lookup.\x20Can\x20be\x20a\x20simple\x20string\x20(recommended\x20for\x20AI)\x20'+'or\x20full\x20object\x20with\x20explicit\x20local_mark_first\x20control.\x20'+'String\x20form\x20auto-converts\x20to\x20{\x20name_or_address:\x20<string>,\x20local_mark_first:\x20true\x20}.');export const ManyAccountOrMark_AddressAISchema=z['union']([z['array'](NameOrAddressSchema)['transform'](a=>({'entities':a['map'](b=>({'name_or_address':b,'local_mark_first':!![]})),'check_all_founded':!![]}))['describe']('Array\x20of\x20account\x20names,\x20addresses,\x20or\x20mark\x20names.\x20'+'Local\x20marks\x20are\x20searched\x20first\x20for\x20each\x20entry.\x20'+'EXAMPLE:\x20[\x27alice\x27,\x20\x270x2...\x27,\x20\x27bob\x27]'),ManyAccountOrMark_AddressSchema])['describe']('Batch\x20account\x20or\x20address\x20lookup.\x20Can\x20be\x20an\x20array\x20of\x20strings\x20(recommended\x20for\x20AI)\x20'+'or\x20full\x20object\x20with\x20explicit\x20control.\x20'+'Array\x20form\x20auto-converts\x20to\x20{\x20entities:\x20[...],\x20check_all_founded:\x20true\x20}.');export const ObjectOwnerSchema=z['union']([z['object']({'AddressOwner':z['string']()['describe']('Address\x20owner')})['strict'](),z['object']({'ObjectOwner':z['string']()['describe']('Object\x20owner')})['strict'](),z['object']({'Shared':z['object']({'initial_shared_version':z['union']([z['string'](),z['number']()])['describe']('Version\x20when\x20object\x20became\x20shared')})['strict']()['describe']('Shared\x20object')})['strict'](),z['literal']('Immutable'),z['object']({'ConsensusAddressOwner':z['object']({'owner':z['string']()['describe']('Consensus\x20ID\x20owner'),'start_version':z['union']([z['string'](),z['number']()])['describe']('Version\x20when\x20object\x20recently\x20became\x20consensus\x20object')})['strict']()['describe']('Consensus\x20ID\x20owner')})['strict']()])['describe']('Object\x20owner');export const ValueTypeUserSchema=z['union']([z['literal'](a375a['Bool'])['describe']('Bool\x20(0)'),z['literal'](a375a['Address'])['describe']('Address\x20(1)'),z['literal'](a375a['String'])['describe']('String\x20(2)'),z['literal'](a375a['U8'])['describe']('U8\x20(3)'),z['literal'](a375a['U16'])['describe']('U16\x20(4)'),z['literal'](a375a['U32'])['describe']('U32\x20(5)'),z['literal'](a375a['U64'])['describe']('U64\x20(6)'),z['literal'](a375a['U128'])['describe']('U128\x20(7)'),z['literal'](a375a['U256'])['describe']('U256\x20(8)'),z['literal'](a375a['VecBool'])['describe']('VecBool\x20(9)'),z['literal'](a375a['VecAddress'])['describe']('VecAddress\x20(10)'),z['literal'](a375a['VecString'])['describe']('VecString\x20(11)'),z['literal'](a375a['VecU8'])['describe']('VecU8\x20(12)'),z['literal'](a375a['VecU16'])['describe']('VecU16\x20(13)'),z['literal'](a375a['VecU32'])['describe']('VecU32\x20(14)'),z['literal'](a375a['VecU64'])['describe']('VecU64\x20(15)'),z['literal'](a375a['VecU128'])['describe']('VecU128\x20(16)'),z['literal'](a375a['VecU256'])['describe']('VecU256\x20(17)'),z['literal'](a375a['VecVecU8'])['describe']('VecVecU8\x20(18)'),z['literal']('Bool')['describe']('Bool'),z['literal']('Address')['describe']('Address'),z['literal']('String')['describe']('String'),z['literal']('U8')['describe']('U8'),z['literal']('U16')['describe']('U16'),z['literal']('U32')['describe']('U32'),z['literal']('U64')['describe']('U64'),z['literal']('U128')['describe']('U128'),z['literal']('U256')['describe']('U256'),z['literal']('VecBool')['describe']('VecBool'),z['literal']('VecAddress')['describe']('VecAddress'),z['literal']('VecString')['describe']('VecString'),z['literal']('VecU8')['describe']('VecU8'),z['literal']('VecU16')['describe']('VecU16'),z['literal']('VecU32')['describe']('VecU32'),z['literal']('VecU64')['describe']('VecU64'),z['literal']('VecU128')['describe']('VecU128'),z['literal']('VecU256')['describe']('VecU256'),z['literal']('VecVecU8')['describe']('VecVecU8'),z['literal']('bool')['describe']('bool'),z['literal']('address')['describe']('address'),z['literal']('string')['describe']('string'),z['literal']('u8')['describe']('u8'),z['literal']('u16')['describe']('u16'),z['literal']('u32')['describe']('u32'),z['literal']('u64')['describe']('u64'),z['literal']('u128')['describe']('u128'),z['literal']('u256')['describe']('u256'),z['literal']('vecbool')['describe']('vecbool'),z['literal']('vecaddress')['describe']('vecaddress'),z['literal']('vecstring')['describe']('vecstring'),z['literal']('vecu8')['describe']('vecu8'),z['literal']('vecu16')['describe']('vecu16'),z['literal']('vecu32')['describe']('vecu32'),z['literal']('vecu64')['describe']('vecu64'),z['literal']('vecu128')['describe']('vecu128'),z['literal']('vecu256')['describe']('vecu256'),z['literal']('vecvecu8')['describe']('vecvecu8')])['describe']('User\x20available\x20value\x20type\x20(number\x20or\x20string,\x20e.g.,\x206\x20or\x20\x27U64\x27\x20or\x20\x27u64\x27)');export const ValueTypeSchema=ValueTypeUserSchema['or'](z['literal'](a375a['Value'])['describe']('Value\x20(19)'))['or'](z['literal']('Value')['describe']('Value'))['describe']('Value\x20type\x20(number\x20or\x20string,\x20e.g.,\x206\x20or\x20\x27U64\x27)');export const ObjectTypeSchema=z['enum']([a375b['Permission'],a375b['Repository'],a375b['Arb'],a375b['Arbitration'],a375b['Service'],a375b['Machine'],a375b['Order'],a375b['Progress'],a375b['Payment'],a375b['Treasury'],a375b['Guard'],a375b['Demand'],a375b['Passport'],a375b['Allocation'],a375b['Resource'],a375b['Reward'],a375b['Discount'],a375b['EntityRegistrar'],a375b['EntityLinker'],a375b['Proof'],a375b['WReceivedObject'],a375b['Contact'],a375b['TableItem_ProgressHistory'],a375b['TableItem_PermissionPerm'],a375b['TableItem_DemandPresenter'],a375b['TableItem_MachineNode'],a375b['TableItem_TreasuryHistory'],a375b['TableItem_RepositoryData'],a375b['TableItem_RewardRecord'],a375b['TableItem_EntityLinker'],a375b['TableItem_AddressMark'],a375b['TableItem_EntityRegistrar']])['describe']('Wowok\x20object\x20type');export const BalanceTypeSchema=z['union']([z['number'](),z['string']()])['refine'](a=>{if(typeof a==='number')return Number['isSafeInteger'](a)&&a>=0x0;const b=a['trim']();if(/^\d+$/['test'](b))return!![];return/^(\d+(?:\.\d+)?)\s*([A-Za-z][A-Za-z0-9]*)$/['test'](b);},'Invalid\x20amount:\x20bare\x20decimal\x20values\x20without\x20a\x20token\x20symbol\x20(e.g.\x20\x222.5\x22,\x20\x220.1\x22)\x20are\x20rejected.\x20'+'Use\x20a\x20smallest-unit\x20non-negative\x20integer\x20string\x20(e.g.\x20\x222500000000\x22),\x20a\x20non-negative\x20safe-integer\x20number,\x20'+'or\x20a\x20display\x20string\x20with\x20the\x20token\x20symbol\x20(e.g.\x20\x222.5WOW\x22)\x20so\x20the\x20Fund\x20Processing\x20Layer\x20can\x20convert\x20it.')['describe']('A\x20coin/balance\x20amount.\x20Accepts\x20three\x20formats:\x20'+'(1)\x20DISPLAY\x20FORMAT\x20with\x20token\x20symbol:\x20\x222.5WOW\x22,\x20\x2210USDC\x22,\x20\x220.05WOW\x22\x20—\x20'+'auto-converted\x20to\x20smallest\x20units\x20via\x20the\x20Fund\x20Processing\x20Layer\x20(token\x20precision\x20resolved\x20'+'from\x20official\x20registry\x20→\x20cache\x20→\x20on-chain).\x20The\x20symbol\x20MUST\x20match\x20the\x20token\x27s\x20type_parameter.\x20'+'(2)\x20SMALLEST\x20UNIT\x20(numeric\x20string):\x20\x2210000000000\x22\x20—\x20used\x20as-is,\x20no\x20conversion.\x20'+'(3)\x20SMALLEST\x20UNIT\x20(number):\x2010000000000\x20—\x20used\x20as-is\x20only\x20within\x20the\x20safe\x20integer\x20range\x20(±2^53);\x20numbers\x20outside\x20it\x20are\x20REJECTED,\x20use\x20a\x20numeric\x20string\x20instead.\x20'+'PRECISION\x20RULE:\x20for\x20values\x20exceeding\x202^53\x20(9007199254740991),\x20ALWAYS\x20use\x20format\x20(1)\x20or\x20(2)\x20—\x20JS\x20numbers\x20lose\x20integer\x20precision\x20silently\x20and\x20such\x20inputs\x20are\x20blocked.\x20'+'Raw\x20amounts\x20must\x20be\x20plain\x20non-negative\x20integers;\x20a\x20decimal\x20value\x20without\x20a\x20token\x20symbol\x20(e.g.\x20\x222.5\x22)\x20is\x20rejected\x20—\x20append\x20the\x20symbol\x20(\x222.5WOW\x22)\x20so\x20the\x20Fund\x20Processing\x20Layer\x20converts\x20it.\x20'+'WARNING\x20—\x20BARE\x20INTEGER\x20MEANS\x20SMALLEST\x20UNIT,\x20NOT\x20TOKENS:\x20formats\x20(2)/(3)\x20are\x20NEVER\x20interpreted\x20as\x20display\x20tokens.\x20'+'For\x20example\x20amount=\x225\x22\x20or\x205\x20means\x205\x20raw\x20units\x20=\x200.000000005\x20WOW\x20(9\x20decimals)\x20—\x20NOT\x205\x20WOW.\x20'+'When\x20the\x20user\x20asks\x20for\x20a\x20token\x20amount,\x20you\x20MUST\x20use\x20display\x20format\x20(\x225WOW\x22,\x20\x222USDC\x22);\x20a\x20bare\x20integer\x20is\x20only\x20correct\x20for\x20unitless\x20counts\x20(e.g.\x20stock\x20quantity)\x20or\x20when\x20you\x20computed\x20exact\x20raw\x20units\x20yourself.\x20'+'Default\x20token:\x20WOW\x20(9\x20decimals,\x201\x20WOW\x20=\x2010^9\x20MIST).\x20'+'For\x20custom\x20tokens:\x20use\x20display\x20format\x20with\x20the\x20token\x27s\x20symbol,\x20or\x20pass\x20smallest\x20units\x20directly.\x20'+'MONEY\x20CONFIRMATION:\x20all\x20monetary\x20fields\x20trigger\x20user\x20confirmation\x20via\x20the\x20Fund\x20Processing\x20Layer,\x20where\x20the\x20token\x27s\x20FULL\x20type,\x20decimals\x20and\x20raw\x20amount\x20are\x20always\x20visible.\x20'+'MULTIPLE\x20ISSUERS:\x20several\x20on-chain\x20tokens\x20may\x20legally\x20share\x20the\x20same\x20symbol\x20(e.g.\x20multiple\x20\x22USDT\x22\x20coins).\x20When\x20a\x20bare\x20symbol\x20matches\x20more\x20than\x20one\x20token,\x20the\x20operation\x20is\x20BLOCKED\x20and\x20every\x20candidate\x20is\x20listed\x20with\x20full\x20details\x20(type,\x20name,\x20decimals,\x20verified\x20tag)\x20—\x20present\x20the\x20list\x20to\x20the\x20USER\x20and\x20let\x20them\x20choose\x20(they\x20may\x20answer\x20by\x20number),\x20then\x20re-issue\x20with\x20the\x20chosen\x20token\x27s\x20FULL\x20type\x20string\x20in\x20type_parameter;\x20never\x20guess\x20an\x20issuer\x20from\x20the\x20bare\x20symbol.\x20'+'MISSING\x20TOKEN\x20INFO:\x20when\x20a\x20token\x27s\x20precision\x20cannot\x20be\x20resolved,\x20the\x20operation\x20is\x20REFUSED\x20(raw\x20u64\x20included\x20—\x20amount\x20magnitude\x20could\x20not\x20be\x20verified).\x20Recovery:\x20provide\x20the\x20token\x27s\x20FULL\x20type\x20in\x20package::module::Name\x20form\x20in\x20type_parameter\x20(a\x20bare\x20symbol\x20like\x20\x22USDT\x22\x20cannot\x20be\x20resolved),\x20and\x20verify\x20the\x20WOW\x20network\x20is\x20correct.\x20'+'Examples:\x20\x222.5WOW\x22\x20(display\x20→\x202500000000),\x2010000000000\x20(number,\x20smallest\x20unit),\x20\x2250000000000\x22\x20(string,\x20smallest\x20unit).\x20'+'Used\x20for:\x20service\x20sale\x20prices,\x20compensation\x20fund\x20balances,\x20Treasury\x20deposits,\x20arbitration\x20fees,\x20reward\x20amounts,\x20stock\x20quantities.');export const QueryIdSchema=z['number']()['int']()['min'](0x0)['describe']('Query\x20ID');export const CacheExpireTypeSchema=z['union']([z['number'](),z['literal']('INFINITE')])['describe']('Cache\x20expiration\x20time\x20type');export const ValueContainerSchema=z['lazy'](()=>z['object']({'valueType':ValueTypeSchema['describe']('Value\x20type'),'value':SupportedValueSchema['describe']('Value')})['strict']()['describe']('Value\x20container\x20with\x20type\x20and\x20value'));export const SupportedValueUserSchema=z['union']([z['boolean'](),z['union']([AccountOrMark_AddressSchema,z['string']()]),z['string'](),z['number'](),z['array'](z['boolean']()),z['union']([ManyAccountOrMark_AddressSchema,z['array'](z['string']())]),z['array'](z['string']()),z['array'](z['number']()),z['array'](z['array'](z['number']()))])['describe']('User\x20available\x20supported\x20value\x20type');export const SupportedValueSchema=SupportedValueUserSchema['or'](ValueContainerSchema)['describe']('Supported\x20value\x20type');export const GuardIdentifierSchema=z['number']()['int']()['min'](0x0)['max'](0xff)['describe']('Identifier\x20(0-255)\x20for\x20data\x20lookup\x20in\x20Guard\x20table.');export const GuardTableItemBaseSchema=z['object']({'identifier':GuardIdentifierSchema,'b_submission':z['boolean']()['describe']('Whether\x20this\x20table\x20item\x27s\x20value\x20is\x20submitted\x20dynamically\x20at\x20Guard\x20trigger\x20time\x20(alloc_by_guard\x20call).\x20'+'\x0a\x0a'+'true\x20=\x20value\x20is\x20submitted\x20by\x20the\x20caller\x20when\x20triggering\x20the\x20Guard.\x20'+'Use\x20for\x20runtime-context-dependent\x20values\x20like\x20order\x20address,\x20user\x20address.\x20'+'The\x20\x27value\x27\x20field\x20is\x20ignored\x20when\x20b_submission=true;\x20the\x20caller\x20must\x20provide\x20it\x20via\x20submissions[].\x20'+'\x0a\x0a'+'false\x20=\x20value\x20is\x20static,\x20set\x20at\x20Guard\x20creation\x20time.\x20'+'Use\x20for\x20values\x20known\x20when\x20the\x20Guard\x20is\x20created:\x20expected\x20node\x20names,\x20expected\x20merchant\x20address,\x20expected\x20service\x20address.\x20'+'The\x20\x27value\x27\x20field\x20must\x20be\x20populated\x20and\x20will\x20be\x20stored\x20on-chain\x20permanently.\x20'+'\x0a\x0a'+'Rule\x20of\x20thumb:\x20if\x20the\x20value\x20is\x20the\x20SAME\x20for\x20all\x20future\x20Guard\x20triggers,\x20use\x20false.\x20'+'If\x20the\x20value\x20DIFFERS\x20per\x20trigger\x20(e.g.,\x20which\x20order\x20to\x20release\x20funds\x20for),\x20use\x20true.'),'value_type':ValueTypeUserSchema['describe']('Type\x20of\x20the\x20value\x20stored\x20in\x20`value`.\x20One\x20of:\x20Bool(0),\x20Address(1),\x20String(2),\x20U8(3),\x20U16(4),\x20U32(5),\x20U64(6),\x20U128(7),\x20U256(8),\x20VecBool(9),\x20VecAddress(10),\x20VecString(11),\x20VecU8(12),\x20VecU16(13),\x20VecU32(14),\x20VecU64(15),\x20VecU128(16),\x20VecU256(17),\x20VecVecU8(18).\x20'+'When\x20value_type=Address\x20(1),\x20the\x20`value`\x20field\x20accepts\x20a\x20hex\x20address\x20string,\x20a\x20LocalMark\x20name,\x20or\x20an\x20AccountOrMark_Address\x20object\x20—\x20see\x20`value`\x20field\x20description\x20for\x20details.'),'value':SupportedValueUserSchema['optional']()['describe']('The\x20actual\x20value\x20data.\x20Format\x20depends\x20on\x20`value_type`:\x0a'+'•\x20Bool:\x20true/false\x20(boolean)\x0a'+'•\x20Address\x20(CRITICAL\x20—\x20string\x20\x27Address\x27\x20is\x20NOT\x20a\x20placeholder):\x20a\x20hex\x20address\x20(e.g.\x20\x270x1234...\x27),\x20a\x20LocalMark\x20name\x20(e.g.\x20\x27my-service\x27\x20—\x20resolved\x20to\x20address\x20at\x20evaluation\x20time),\x20an\x20AccountOrMark_Address\x20object\x20(e.g.\x20{name_or_address:\x27my-service\x27}),\x20or\x20system\x20shorthand\x20(\x270xaaa\x27\x20=\x20EntityLinker,\x20\x270xaab\x27\x20=\x20EntityRegistrar).\x20The\x20literal\x20string\x20\x27Address\x27\x20itself\x20is\x20INVALID\x20—\x20it\x20would\x20be\x20treated\x20as\x20a\x20non-existent\x20LocalMark\x20name\x20and\x20fail.\x20Example:\x20value=\x270x2::wow::WOW<address>\x27\x20or\x20value=\x27my-permission\x27.\x0a'+'•\x20String:\x20any\x20string\x0a'+'•\x20U8/U16/U32/U64/U128/U256:\x20number\x20or\x20numeric\x20string\x20(e.g.\x2042\x20or\x20\x2742\x27)\x0a'+'•\x20Vec*\x20types:\x20arrays\x20of\x20the\x20corresponding\x20element\x20type\x0a'+'REQUIRED\x20when\x20b_submission=false.\x20OPTIONAL\x20when\x20b_submission=true\x20(value\x20is\x20supplied\x20at\x20evaluation\x20time\x20by\x20user\x20submission).'),'name':z['string']()['default']('')['refine'](a=>{if(a['length']===0x0)return!![];if(new TextEncoder()['encode'](a)['length']>MAX_NAME_LENGTH)return![];return!a['toLowerCase']()['startsWith']('0x');},{'message':'Name\x20must\x20be\x20at\x20most\x20'+MAX_NAME_LENGTH+'\x20BCS\x20characters\x20(UTF-8\x20bytes)\x20and\x20must\x20not\x20start\x20with\x20\x270x\x27.\x20Use\x20a\x20short\x20identifier\x20(e.g.\x20\x27order_id\x27,\x20\x27delivery_node\x27);\x20put\x20longer\x20explanations\x20in\x20the\x20Guard\x27s\x20\x27description\x27\x20field'})['describe']('Data\x20name\x20identifier.\x20MAX\x2064\x20BCS\x20characters\x20(Chinese\x20chars\x20count\x20as\x203-4\x20BCS\x20bytes\x20each).\x20'+'Use\x20short\x20identifiers\x20like\x20\x27order_id\x27,\x20\x27delivery_node\x27.\x20'+'Put\x20longer\x20descriptions\x20in\x20the\x20Guard\x27s\x20\x27description\x27\x20field,\x20NOT\x20here.')})['strict']()['describe']('Guard\x20table\x20item\x20(INPUT/CREATION\x20form).\x20DO\x20NOT\x20include\x20`object_type`\x20field\x20—\x20it\x20is\x20query-output\x20only\x20and\x20will\x20be\x20rejected\x20here.');export const GuardTableItemSchema=GuardTableItemBaseSchema['extend']({'object_type':ObjectTypeSchema['optional']()['describe']('OUTPUT-ONLY\x20(query\x20side):\x20Object\x20type\x20when\x20value_type\x20is\x20Address\x20and\x20represents\x20a\x20specific\x20object.\x20Auto-derived\x20by\x20the\x20system\x20—\x20DO\x20NOT\x20set\x20this\x20field\x20at\x20Guard\x20creation.')})['strict']()['describe']('Guard\x20table\x20item\x20(QUERY/OUTPUT\x20form\x20—\x20includes\x20auto-derived\x20object_type\x20field)');export const EntrypointSchema=z['enum']([ENTRYPOINT['Localnet'],ENTRYPOINT['Testnet'],ENTRYPOINT['Mainnet']])['describe']('Network\x20entrypoint:\x20Specifies\x20which\x20network\x20the\x20operation\x20occurs\x20on.\x20'+'FIX-010\x20cross-network\x20note:\x20LocalMark\x20names\x20are\x20scoped\x20per\x20network\x20(testnet\x20marks\x20are\x20invisible\x20on\x20mainnet\x20and\x20vice\x20versa).\x20'+'When\x20migrating\x20from\x20testnet\x20to\x20mainnet,\x20recreate\x20all\x20objects\x20on\x20mainnet\x20and\x20re-register\x20LocalMark\x20names\x20with\x20the\x20SAME\x20names\x20'+'to\x20keep\x20name-based\x20references\x20working\x20across\x20networks.\x20Recreate\x20all\x20objects\x20on\x20the\x20target\x20network\x20'+'via\x20onchain_operations\x20with\x20env.network=target_network,\x20then\x20re-register\x20the\x20LocalMark\x20names.');export const FaucetNetworkSchema=z['enum']([ENTRYPOINT['Localnet'],ENTRYPOINT['Testnet']])['describe']('Network\x20entrypoint\x20for\x20Faucet:\x20Specifies\x20which\x20network\x20the\x20operation\x20occurs\x20on');export const ObjectBaseSchema=z['object']({'object':z['string']()['describe']('Object\x20ID'),'type':ObjectTypeSchema['optional']()['describe']('Object\x20type'),'type_raw':z['string']()['optional']()['describe']('Raw\x20object\x20type'),'owner':z['union']([ObjectOwnerSchema,z['null']()])['optional']()['describe']('Object\x20owner'),'version':z['union']([z['string'](),z['number']()])['optional']()['describe']('Object\x20version'),'previousTransaction':z['string']()['optional']()['describe']('Previous\x20transaction\x20ID'),'cache_expire':CacheExpireTypeSchema['optional']()['describe']('Cache\x20expiration\x20time'),'query_name':z['string']()['optional']()['describe']('Original\x20query\x20name\x20or\x20address\x20used\x20to\x20retrieve\x20this\x20object'),'content_raw':z['any']()['optional']()['describe']('Raw\x20content\x20data\x20for\x20unknown\x20object\x20types'),'_guard_node_comments':z['array'](z['object']({'type':z['string'](),'description':z['string']()}))['optional']()['describe']('Additional\x20comments\x20for\x20Guard\x20node\x20instructions')})['passthrough']()['describe']('Object\x20base\x20information');export const QueryEnvSchema=z['object']({'no_cache':z['boolean']()['optional']()['describe']('Whether\x20to\x20disable\x20cache'),'network':EntrypointSchema['optional']()})['strict']()['describe']('Query\x20environment\x20parameters');export const ReceivedBalanceObjectSchema=z['object']({'id':z['string']()['describe']('Received\x20CoinWrapper\x20object\x20ID'),'balance':BalanceTypeSchema,'payment':z['string']()['describe']('Payment\x20object\x20ID'),'type':z['string']()['optional']()['describe']('Type\x20of\x20the\x20received\x20object\x20(or\x20inner\x20coin\x20type);\x20used\x20for\x20token_type\x20detection'),'version':z['string']()['optional']()['describe']('Object\x20version,\x20required\x20to\x20build\x20a\x20Receiving<T>\x20argument\x20for\x20owner_receive'),'digest':z['string']()['optional']()['describe']('Object\x20digest,\x20required\x20to\x20build\x20a\x20Receiving<T>\x20argument\x20for\x20owner_receive')})['strict']()['describe']('Received\x20CoinWrapper\x20object\x20record');export const CoinWrapperTokenTypeSchema=z['string']()['refine'](a=>{const b=a['match'](/^CoinWrapper<(.+)>$/);if(b){const g=b[0x1];if(g===WOW_TOKEN_TYPE)return!![];const h=g['split']('::');if(h['length']!==0x3)return![];const [i,j,k]=h;if(!isValidWowAddress(i))return![];if(!isValidMoveIdentifier(j))return![];if(!isValidMoveIdentifier(k))return![];return!![];}if(a===WOW_TOKEN_TYPE)return!![];const c=a['split']('::');if(c['length']!==0x3)return![];const [d,e,f]=c;if(!isValidWowAddress(d))return![];if(!isValidMoveIdentifier(e))return![];if(!isValidMoveIdentifier(f))return![];return!![];},{'message':'Invalid\x20token\x20type\x20format.\x20Expected:\x20CoinWrapper<{address}::{module}::{struct}>\x20or\x20{address}::{module}::{struct}.\x20Example:\x20CoinWrapper<0x2::wow::WOW>\x20or\x200x2::wow::WOW'})['describe']('Token\x20type\x20in\x20format:\x20CoinWrapper<{address}::{module}::{struct}>\x20or\x20{address}::{module}::{struct}.\x20Example:\x20CoinWrapper<0x2::wow::WOW>');export const ReceivedBalanceSchema=z['object']({'balance':BalanceTypeSchema,'token_type':CoinWrapperTokenTypeSchema['describe']('Asset\x20type\x20of\x20Coin\x20objects.\x20Supports\x20CoinWrapper<...>\x20format\x20for\x20order\x20receive\x20operations.'),'received':z['array'](ReceivedBalanceObjectSchema)['describe']('Received\x20records\x20of\x20Coin\x20objects')})['strict']()['describe']('Received\x20record\x20of\x20Coin\x20objects');export const ReceivedBalanceOrRecentlySchema=z['union']([ReceivedBalanceSchema,z['literal']('recently')])['describe']('Specified\x20received\x20balance\x20record\x20or\x20all\x20recently\x20received\x20balance\x20record');export const ReceivedNormalSchema=z['object']({'id':z['string']()['nonempty']()['describe']('Received\x20object\x20ID'),'type':z['string']()['nonempty']()['describe']('Object\x20type'),'content_raw':z['any']()['optional']()['describe']('Raw\x20content\x20data'),'version':z['string']()['optional']()['describe']('Object\x20version,\x20required\x20to\x20build\x20a\x20Receiving<T>\x20argument\x20for\x20owner_receive'),'digest':z['string']()['optional']()['describe']('Object\x20digest,\x20required\x20to\x20build\x20a\x20Receiving<T>\x20argument\x20for\x20owner_receive')})['strict']()['describe']('Received\x20normal\x20object\x20record');export const ReceivedObjectsOrRecentlySchema=z['union']([z['array'](ReceivedNormalSchema),ReceivedBalanceSchema,z['literal']('recently')])['describe']('Specified\x20received\x20object\x20records\x20or\x20all\x20recently\x20received\x20object\x20records');export const RECEIVE_FORMAT_BLOCK_OBJECTS='\x0a\x0aACCEPTED\x20FORMATS\x20(F-06\x20unified\x20receive\x20operation\x20block):\x0a'+'•\x20\x27recently\x27\x20(string\x20literal)\x20—\x20auto-query\x20and\x20receive\x20ALL\x20recently\x20received\x20objects.\x0a'+'\x20\x20Use\x20this\x20for\x20the\x20common\x20case:\x20\x22withdraw\x20everything\x20the\x20object\x20has\x20received.\x22\x0a'+'\x20\x20Example:\x20receive:\x20\x27recently\x27\x0a'+'•\x20ReceivedNormal[]\x20(array)\x20—\x20explicit\x20list\x20of\x20received\x20objects\x20to\x20unwrap.\x0a'+'\x20\x20Use\x20this\x20when\x20you\x20want\x20to\x20receive\x20specific\x20objects\x20only\x20(not\x20all).\x0a'+'\x20\x20Example:\x20receive:\x20[{id:\x20\x270xobj1\x27,\x20type:\x20\x270x2::coin::Coin<0x2::wow::WOW>\x27}]\x0a'+'•\x20ReceivedBalance\x20({token_type,\x20balance,\x20received:\x20[{id,\x20balance,\x20payment}]})\x20—\x0a'+'\x20\x20receive\x20a\x20balance\x20record\x20from\x20a\x20specific\x20Payment/payer.\x0a'+'\x20\x20Use\x20this\x20for\x20precise\x20balance\x20targeting\x20(advanced\x20—\x20usually\x20after\x20querying\x0a'+'\x20\x20the\x20object\x27s\x20received\x20history\x20via\x20query_received).\x0a'+'\x20\x20Example:\x20receive:\x20{token_type:\x20\x270x2::wow::WOW\x27,\x20balance:\x201000000,\x20received:\x20[{id:\x20\x270xrec1\x27,\x20balance:\x201000000,\x20payment:\x20\x270xpay1\x27}]}\x0a'+'ANTI-PATTERN:\x20do\x20NOT\x20wrap\x20in\x20{result:\x20...}\x20—\x20pass\x20the\x20value\x20directly.';export const RECEIVE_FORMAT_BLOCK_BALANCE='\x0a\x0aACCEPTED\x20FORMATS\x20(F-06\x20unified\x20receive\x20operation\x20block):\x0a'+'•\x20\x27recently\x27\x20(string\x20literal)\x20—\x20auto-query\x20and\x20receive\x20ALL\x20recently\x20received\x20balance.\x0a'+'\x20\x20Use\x20this\x20for\x20the\x20common\x20case:\x20\x22deposit\x20all\x20recently\x20received\x20coins\x20into\x20pending\x20balance.\x22\x0a'+'\x20\x20Example:\x20receive:\x20\x27recently\x27\x0a'+'•\x20ReceivedBalance\x20({token_type,\x20balance,\x20received:\x20[{id,\x20balance,\x20payment}]})\x20—\x0a'+'\x20\x20receive\x20a\x20specific\x20balance\x20record\x20from\x20a\x20Payment/payer.\x0a'+'\x20\x20Use\x20this\x20when\x20targeting\x20a\x20specific\x20received\x20balance\x20(advanced).\x0a'+'\x20\x20Example:\x20receive:\x20{token_type:\x20\x270x2::wow::WOW\x27,\x20balance:\x201000000,\x20received:\x20[{id:\x20\x270xrec1\x27,\x20balance:\x201000000,\x20payment:\x20\x270xpay1\x27}]}\x0a'+'ANTI-PATTERN:\x20do\x20NOT\x20wrap\x20in\x20{result:\x20...}\x20—\x20pass\x20the\x20value\x20directly.';export const QueryReceivedResultSchema=z['object']({'result':z['union']([ReceivedBalanceSchema,z['array'](ReceivedNormalSchema)])['describe']('Received\x20CoinWrapper\x20object\x20record\x20or\x20received\x20other\x20objects\x20array')})['strict']()['describe']('Query\x20received\x20result');
|
|
1
|
+
import{z}from'zod';import{isValidAddress,ValueType as a372a,ObjectType as a372b,ENTRYPOINT,isValidWowAddress,isValidName,isValidDescription,MAX_DESCRIPTION_LENGTH,isValidLongName,MAX_LONG_NAME_LENGTH,MAX_NAME_LENGTH}from'@wowok/wowok';const isValidMoveIdentifier=a=>{if(a['length']===0x0)return![];const b=a[0x0];if(b==='_')return a['length']>0x1&&/^[a-zA-Z0-9_]+$/['test'](a['slice'](0x1));if(/^[a-zA-Z]$/['test'](b))return/^[a-zA-Z0-9_]*$/['test'](a['slice'](0x1));return![];};export const DescriptionSchema=z['string']()['trim']()['refine'](isValidDescription,{'message':'Description\x20string\x20(max\x20'+MAX_DESCRIPTION_LENGTH+'\x20bcs\x20characters)'})['describe']('Description\x20string\x20(max\x20'+MAX_DESCRIPTION_LENGTH+'\x20bcs\x20characters)');export const LongNameSchema=z['string']()['refine'](isValidLongName,{'message':'max\x20'+MAX_LONG_NAME_LENGTH+'\x20bcs\x20characters'});export const WowAddressSchema=z['string']()['refine'](isValidAddress,{'message':'Invalid\x20ID\x20format:\x20must\x20be\x20\x270x\x27\x20prefix\x20followed\x20by\x2064\x20hex\x20characters'})['describe']('Valid\x20ID:\x200x\x20prefix\x20+\x2064\x20hex\x20characters,\x20or\x20builtin\x20ID\x20(0x5-0x9,\x200xa,\x200xc,\x200xd,\x200x403,\x200xaaa,\x200xaab,\x200xacc)');const WOW_TOKEN_TYPE='0x2::wow::WOW',isValidTokenTypeAddress=a=>{if(!/^0x[0-9a-fA-F]{1,64}$/['test'](a))return![];return isValidWowAddress('0x'+a['slice'](0x2)['toLowerCase']()['padStart'](0x40,'0'));};export const TokenTypeSchema=z['string']()['refine'](a=>{const b=a['split']('::');if(b['length']!==0x3)return![];const [c,d,e]=b;if(!isValidTokenTypeAddress(c))return![];if(!isValidMoveIdentifier(d))return![];if(!isValidMoveIdentifier(e))return![];return!![];},{'message':'Invalid\x20token\x20type\x20format.\x20Expected:\x20{address}::{module}::{struct}\x20where\x20address\x20is\x20a\x20hex\x20ID\x20(short\x20builtin\x20like\x200x2/0xaaa\x20or\x20full\x200x+64hex),\x20module/struct\x20are\x20valid\x20Move\x20identifiers.\x20e.g.\x20\x270x2::wow::WOW\x27'})['describe']('Token\x20type\x20in\x20format:\x20{address}::{module}::{struct}.\x20e.g.\x20\x270x2::wow::WOW\x27\x20(WOW),\x20\x270x...::usdt::USDT\x27\x20(USDT),\x20\x270x...::eth::ETH\x27\x20(ETH).\x20To\x20discover\x20all\x20available\x20tokens\x20and\x20their\x20type\x20tags,\x20query\x20\x27mainnet\x20bridge\x20tokens\x27\x20via\x20wowok_buildin_info\x20and\x20use\x20the\x20returned\x20`wowTypeTag`\x20here.\x20NOTE:\x20testnet\x20has\x20ONLY\x20WOW\x20(no\x20stablecoins\x20are\x20bridged)\x20—\x20non-WOW\x20tokens\x20are\x20a\x20mainnet\x20capability;\x20the\x20token\x20is\x20fixed\x20at\x20object\x20creation\x20and\x20prices/orders\x20settle\x20in\x20it.');export const TokenTypeWithDefaultSchema=TokenTypeSchema['default'](WOW_TOKEN_TYPE)['describe']('Token\x20type\x20in\x20format:\x20{address}::{module}::{struct}.\x20Default:\x20\x270x2::wow::WOW\x27.\x20Other\x20examples:\x20\x270x...::usdt::USDT\x27\x20(USDT),\x20\x270x...::eth::ETH\x27\x20(ETH).\x20To\x20discover\x20all\x20available\x20tokens\x20and\x20their\x20type\x20tags,\x20query\x20\x27mainnet\x20bridge\x20tokens\x27\x20via\x20wowok_buildin_info\x20and\x20use\x20the\x20returned\x20`wowTypeTag`\x20here.\x20NOTE:\x20testnet\x20has\x20ONLY\x20WOW\x20(no\x20stablecoins\x20are\x20bridged)\x20—\x20non-WOW\x20tokens\x20are\x20a\x20mainnet\x20capability;\x20the\x20token\x20is\x20fixed\x20at\x20object\x20creation\x20and\x20prices/orders\x20settle\x20in\x20it.');export const NameSchema=z['string']()['refine'](isValidName,'Name\x20string\x20(max\x2064\x20bcs\x20characters,\x20must\x20not\x20start\x20with\x20\x270x\x27)');export const NotEmptyNameSchema=z['string']()['nonempty']()['refine'](isValidName,'Name\x20string\x20(at\x20least\x201\x20character,\x20max\x20length\x2064\x20bcs\x20characters)');export const NameOrAddressSchema=z['string']()['refine'](a=>{if(isValidAddress(a))return!![];if(isValidName(a))return!![];return![];},{'message':'Invalid\x20ID\x20format:\x20must\x20be\x20\x270x\x27\x20prefix,\x20or\x20a\x20builtin\x20ID\x20(0x5-0x9,\x200xa,\x200xc,\x200xd,\x200x403,\x200xaaa,\x200xaab,\x200xacc)'})['describe']('Account/Object\x20name\x20or\x20ID.\x20If\x20specifying\x20an\x20account,\x20use\x20empty\x20string\x20\x27\x27\x20for\x20the\x20default\x20account.\x20'+'If\x20it\x20starts\x20with\x20\x270x\x27,\x20it\x20will\x20be\x20treated\x20as\x20an\x20ID.\x20'+'Otherwise,\x20it\x20will\x20be\x20treated\x20as\x20a\x20name\x20(max\x2064\x20bcs\x20characters).');export const AccountOrMark_AddressSchema=z['object']({'name_or_address':NameOrAddressSchema['optional'](),'local_mark_first':z['boolean']()['optional']()['describe']('Whether\x20to\x20prioritize\x20local\x20marks,\x20if\x20true,\x20prioritize\x20local\x20marks,\x20otherwise\x20prioritize\x20global\x20marks')})['strict']()['describe']('Account\x20or\x20address\x20lookup\x20object.\x20Use\x20this\x20to\x20specify\x20which\x20account\x20to\x20use\x20for\x20an\x20operation.\x20'+'EXAMPLE:\x20{\x20name_or_address:\x20\x27testor2\x27\x20}\x20-\x20looks\x20up\x20account\x20by\x20name;\x20'+'EXAMPLE:\x20{\x20name_or_address:\x20\x270x1234...\x27\x20}\x20-\x20uses\x20address\x20directly;\x20'+'If\x20name_or_address\x20is\x20empty\x20string\x20\x27\x27,\x20uses\x20the\x20default\x20local\x20account.');export const ManyAccountOrMark_AddressSchema=z['object']({'entities':z['array'](AccountOrMark_AddressSchema),'check_all_founded':z['boolean']()['default'](!![])['describe']('Whether\x20to\x20check\x20all\x20entities\x20are\x20found.\x20Defaults\x20to\x20true:\x20abort\x20and\x20throw\x20if\x20ANY\x20entity\x20cannot\x20be\x20resolved.\x20Set\x20false\x20only\x20when\x20partial\x20resolution\x20is\x20explicitly\x20intended\x20(only\x20found\x20IDs\x20are\x20returned)')})['strict']()['describe']('Used\x20to\x20batch\x20find\x20account\x20or\x20object\x20IDs\x20by\x20name');export const AccountOrMark_AddressAISchema=z['union']([NameOrAddressSchema['transform'](a=>({'name_or_address':a,'local_mark_first':!![]}))['describe']('Account\x20name,\x20address\x20(0x...),\x20or\x20mark\x20name.\x20'+'When\x20using\x20string\x20format,\x20local\x20marks\x20are\x20searched\x20first.\x20'+'EXAMPLE:\x20\x27alice\x27\x20-\x20searches\x20local\x20marks\x20first,\x20then\x20global;\x20'+'EXAMPLE:\x20\x270x2...\x27\x20(64\x20hex\x20chars)\x20-\x20uses\x20address\x20directly;\x20'+'EXAMPLE:\x20\x27\x27\x20-\x20uses\x20the\x20default\x20local\x20account'),AccountOrMark_AddressSchema])['describe']('Account\x20or\x20address\x20lookup.\x20Can\x20be\x20a\x20simple\x20string\x20(recommended\x20for\x20AI)\x20'+'or\x20full\x20object\x20with\x20explicit\x20local_mark_first\x20control.\x20'+'String\x20form\x20auto-converts\x20to\x20{\x20name_or_address:\x20<string>,\x20local_mark_first:\x20true\x20}.');export const ManyAccountOrMark_AddressAISchema=z['union']([z['array'](NameOrAddressSchema)['transform'](a=>({'entities':a['map'](b=>({'name_or_address':b,'local_mark_first':!![]})),'check_all_founded':!![]}))['describe']('Array\x20of\x20account\x20names,\x20addresses,\x20or\x20mark\x20names.\x20'+'Local\x20marks\x20are\x20searched\x20first\x20for\x20each\x20entry.\x20'+'EXAMPLE:\x20[\x27alice\x27,\x20\x270x2...\x27,\x20\x27bob\x27]'),ManyAccountOrMark_AddressSchema])['describe']('Batch\x20account\x20or\x20address\x20lookup.\x20Can\x20be\x20an\x20array\x20of\x20strings\x20(recommended\x20for\x20AI)\x20'+'or\x20full\x20object\x20with\x20explicit\x20control.\x20'+'Array\x20form\x20auto-converts\x20to\x20{\x20entities:\x20[...],\x20check_all_founded:\x20true\x20}.');export const ObjectOwnerSchema=z['union']([z['object']({'AddressOwner':z['string']()['describe']('Address\x20owner')})['strict'](),z['object']({'ObjectOwner':z['string']()['describe']('Object\x20owner')})['strict'](),z['object']({'Shared':z['object']({'initial_shared_version':z['union']([z['string'](),z['number']()])['describe']('Version\x20when\x20object\x20became\x20shared')})['strict']()['describe']('Shared\x20object')})['strict'](),z['literal']('Immutable'),z['object']({'ConsensusAddressOwner':z['object']({'owner':z['string']()['describe']('Consensus\x20ID\x20owner'),'start_version':z['union']([z['string'](),z['number']()])['describe']('Version\x20when\x20object\x20recently\x20became\x20consensus\x20object')})['strict']()['describe']('Consensus\x20ID\x20owner')})['strict']()])['describe']('Object\x20owner');export const ValueTypeUserSchema=z['union']([z['literal'](a372a['Bool'])['describe']('Bool\x20(0)'),z['literal'](a372a['Address'])['describe']('Address\x20(1)'),z['literal'](a372a['String'])['describe']('String\x20(2)'),z['literal'](a372a['U8'])['describe']('U8\x20(3)'),z['literal'](a372a['U16'])['describe']('U16\x20(4)'),z['literal'](a372a['U32'])['describe']('U32\x20(5)'),z['literal'](a372a['U64'])['describe']('U64\x20(6)'),z['literal'](a372a['U128'])['describe']('U128\x20(7)'),z['literal'](a372a['U256'])['describe']('U256\x20(8)'),z['literal'](a372a['VecBool'])['describe']('VecBool\x20(9)'),z['literal'](a372a['VecAddress'])['describe']('VecAddress\x20(10)'),z['literal'](a372a['VecString'])['describe']('VecString\x20(11)'),z['literal'](a372a['VecU8'])['describe']('VecU8\x20(12)'),z['literal'](a372a['VecU16'])['describe']('VecU16\x20(13)'),z['literal'](a372a['VecU32'])['describe']('VecU32\x20(14)'),z['literal'](a372a['VecU64'])['describe']('VecU64\x20(15)'),z['literal'](a372a['VecU128'])['describe']('VecU128\x20(16)'),z['literal'](a372a['VecU256'])['describe']('VecU256\x20(17)'),z['literal'](a372a['VecVecU8'])['describe']('VecVecU8\x20(18)'),z['literal']('Bool')['describe']('Bool'),z['literal']('Address')['describe']('Address'),z['literal']('String')['describe']('String'),z['literal']('U8')['describe']('U8'),z['literal']('U16')['describe']('U16'),z['literal']('U32')['describe']('U32'),z['literal']('U64')['describe']('U64'),z['literal']('U128')['describe']('U128'),z['literal']('U256')['describe']('U256'),z['literal']('VecBool')['describe']('VecBool'),z['literal']('VecAddress')['describe']('VecAddress'),z['literal']('VecString')['describe']('VecString'),z['literal']('VecU8')['describe']('VecU8'),z['literal']('VecU16')['describe']('VecU16'),z['literal']('VecU32')['describe']('VecU32'),z['literal']('VecU64')['describe']('VecU64'),z['literal']('VecU128')['describe']('VecU128'),z['literal']('VecU256')['describe']('VecU256'),z['literal']('VecVecU8')['describe']('VecVecU8'),z['literal']('bool')['describe']('bool'),z['literal']('address')['describe']('address'),z['literal']('string')['describe']('string'),z['literal']('u8')['describe']('u8'),z['literal']('u16')['describe']('u16'),z['literal']('u32')['describe']('u32'),z['literal']('u64')['describe']('u64'),z['literal']('u128')['describe']('u128'),z['literal']('u256')['describe']('u256'),z['literal']('vecbool')['describe']('vecbool'),z['literal']('vecaddress')['describe']('vecaddress'),z['literal']('vecstring')['describe']('vecstring'),z['literal']('vecu8')['describe']('vecu8'),z['literal']('vecu16')['describe']('vecu16'),z['literal']('vecu32')['describe']('vecu32'),z['literal']('vecu64')['describe']('vecu64'),z['literal']('vecu128')['describe']('vecu128'),z['literal']('vecu256')['describe']('vecu256'),z['literal']('vecvecu8')['describe']('vecvecu8')])['describe']('User\x20available\x20value\x20type\x20(number\x20or\x20string,\x20e.g.,\x206\x20or\x20\x27U64\x27\x20or\x20\x27u64\x27)');export const ValueTypeSchema=ValueTypeUserSchema['or'](z['literal'](a372a['Value'])['describe']('Value\x20(19)'))['or'](z['literal']('Value')['describe']('Value'))['describe']('Value\x20type\x20(number\x20or\x20string,\x20e.g.,\x206\x20or\x20\x27U64\x27)');export const ObjectTypeSchema=z['enum']([a372b['Permission'],a372b['Repository'],a372b['Arb'],a372b['Arbitration'],a372b['Service'],a372b['Machine'],a372b['Order'],a372b['Progress'],a372b['Payment'],a372b['Treasury'],a372b['Guard'],a372b['Demand'],a372b['Passport'],a372b['Allocation'],a372b['Resource'],a372b['Reward'],a372b['Discount'],a372b['EntityRegistrar'],a372b['EntityLinker'],a372b['Proof'],a372b['WReceivedObject'],a372b['Contact'],a372b['TableItem_ProgressHistory'],a372b['TableItem_PermissionPerm'],a372b['TableItem_DemandPresenter'],a372b['TableItem_MachineNode'],a372b['TableItem_TreasuryHistory'],a372b['TableItem_RepositoryData'],a372b['TableItem_RewardRecord'],a372b['TableItem_EntityLinker'],a372b['TableItem_AddressMark'],a372b['TableItem_EntityRegistrar']])['describe']('Wowok\x20object\x20type');export const BalanceTypeSchema=z['union']([z['number'](),z['string']()])['refine'](a=>{if(typeof a==='number')return Number['isSafeInteger'](a)&&a>=0x0;const b=a['trim']();if(/^\d+$/['test'](b))return!![];return/^(\d+(?:\.\d+)?)\s*([A-Za-z][A-Za-z0-9]*)$/['test'](b);},'Invalid\x20amount:\x20bare\x20decimal\x20values\x20without\x20a\x20token\x20symbol\x20(e.g.\x20\x222.5\x22,\x20\x220.1\x22)\x20are\x20rejected.\x20'+'Use\x20a\x20smallest-unit\x20non-negative\x20integer\x20string\x20(e.g.\x20\x222500000000\x22),\x20a\x20non-negative\x20safe-integer\x20number,\x20'+'or\x20a\x20display\x20string\x20with\x20the\x20token\x20symbol\x20(e.g.\x20\x222.5WOW\x22)\x20so\x20the\x20Fund\x20Processing\x20Layer\x20can\x20convert\x20it.')['describe']('A\x20coin/balance\x20amount.\x20Accepts\x20three\x20formats:\x20'+'(1)\x20DISPLAY\x20FORMAT\x20with\x20token\x20symbol:\x20\x222.5WOW\x22,\x20\x2210USDC\x22,\x20\x220.05WOW\x22\x20—\x20'+'auto-converted\x20to\x20smallest\x20units\x20via\x20the\x20Fund\x20Processing\x20Layer\x20(token\x20precision\x20resolved\x20'+'from\x20official\x20registry\x20→\x20cache\x20→\x20on-chain).\x20The\x20symbol\x20MUST\x20match\x20the\x20token\x27s\x20type_parameter.\x20'+'(2)\x20SMALLEST\x20UNIT\x20(numeric\x20string):\x20\x2210000000000\x22\x20—\x20used\x20as-is,\x20no\x20conversion.\x20'+'(3)\x20SMALLEST\x20UNIT\x20(number):\x2010000000000\x20—\x20used\x20as-is\x20only\x20within\x20the\x20safe\x20integer\x20range\x20(±2^53);\x20numbers\x20outside\x20it\x20are\x20REJECTED,\x20use\x20a\x20numeric\x20string\x20instead.\x20'+'PRECISION\x20RULE:\x20for\x20values\x20exceeding\x202^53\x20(9007199254740991),\x20ALWAYS\x20use\x20format\x20(1)\x20or\x20(2)\x20—\x20JS\x20numbers\x20lose\x20integer\x20precision\x20silently\x20and\x20such\x20inputs\x20are\x20blocked.\x20'+'Raw\x20amounts\x20must\x20be\x20plain\x20non-negative\x20integers;\x20a\x20decimal\x20value\x20without\x20a\x20token\x20symbol\x20(e.g.\x20\x222.5\x22)\x20is\x20rejected\x20—\x20append\x20the\x20symbol\x20(\x222.5WOW\x22)\x20so\x20the\x20Fund\x20Processing\x20Layer\x20converts\x20it.\x20'+'WARNING\x20—\x20BARE\x20INTEGER\x20MEANS\x20SMALLEST\x20UNIT,\x20NOT\x20TOKENS:\x20formats\x20(2)/(3)\x20are\x20NEVER\x20interpreted\x20as\x20display\x20tokens.\x20'+'For\x20example\x20amount=\x225\x22\x20or\x205\x20means\x205\x20raw\x20units\x20=\x200.000000005\x20WOW\x20(9\x20decimals)\x20—\x20NOT\x205\x20WOW.\x20'+'When\x20the\x20user\x20asks\x20for\x20a\x20token\x20amount,\x20you\x20MUST\x20use\x20display\x20format\x20(\x225WOW\x22,\x20\x222USDC\x22);\x20a\x20bare\x20integer\x20is\x20only\x20correct\x20for\x20unitless\x20counts\x20(e.g.\x20stock\x20quantity)\x20or\x20when\x20you\x20computed\x20exact\x20raw\x20units\x20yourself.\x20'+'Default\x20token:\x20WOW\x20(9\x20decimals,\x201\x20WOW\x20=\x2010^9\x20MIST).\x20'+'For\x20custom\x20tokens:\x20use\x20display\x20format\x20with\x20the\x20token\x27s\x20symbol,\x20or\x20pass\x20smallest\x20units\x20directly.\x20'+'MONEY\x20CONFIRMATION:\x20all\x20monetary\x20fields\x20trigger\x20user\x20confirmation\x20via\x20the\x20Fund\x20Processing\x20Layer,\x20where\x20the\x20token\x27s\x20FULL\x20type,\x20decimals\x20and\x20raw\x20amount\x20are\x20always\x20visible.\x20'+'MULTIPLE\x20ISSUERS:\x20several\x20on-chain\x20tokens\x20may\x20legally\x20share\x20the\x20same\x20symbol\x20(e.g.\x20multiple\x20\x22USDT\x22\x20coins).\x20When\x20a\x20bare\x20symbol\x20matches\x20more\x20than\x20one\x20token,\x20the\x20operation\x20is\x20BLOCKED\x20and\x20every\x20candidate\x20is\x20listed\x20with\x20full\x20details\x20(type,\x20name,\x20decimals,\x20verified\x20tag)\x20—\x20present\x20the\x20list\x20to\x20the\x20USER\x20and\x20let\x20them\x20choose\x20(they\x20may\x20answer\x20by\x20number),\x20then\x20re-issue\x20with\x20the\x20chosen\x20token\x27s\x20FULL\x20type\x20string\x20in\x20type_parameter;\x20never\x20guess\x20an\x20issuer\x20from\x20the\x20bare\x20symbol.\x20'+'MISSING\x20TOKEN\x20INFO:\x20when\x20a\x20token\x27s\x20precision\x20cannot\x20be\x20resolved,\x20the\x20operation\x20is\x20REFUSED\x20(raw\x20u64\x20included\x20—\x20amount\x20magnitude\x20could\x20not\x20be\x20verified).\x20Recovery:\x20provide\x20the\x20token\x27s\x20FULL\x20type\x20in\x20package::module::Name\x20form\x20in\x20type_parameter\x20(a\x20bare\x20symbol\x20like\x20\x22USDT\x22\x20cannot\x20be\x20resolved),\x20and\x20verify\x20the\x20WOW\x20network\x20is\x20correct.\x20'+'Examples:\x20\x222.5WOW\x22\x20(display\x20→\x202500000000),\x2010000000000\x20(number,\x20smallest\x20unit),\x20\x2250000000000\x22\x20(string,\x20smallest\x20unit).\x20'+'Used\x20for:\x20service\x20sale\x20prices,\x20compensation\x20fund\x20balances,\x20Treasury\x20deposits,\x20arbitration\x20fees,\x20reward\x20amounts,\x20stock\x20quantities.');export const QueryIdSchema=z['number']()['int']()['min'](0x0)['describe']('Query\x20ID');export const CacheExpireTypeSchema=z['union']([z['number'](),z['literal']('INFINITE')])['describe']('Cache\x20expiration\x20time\x20type');export const ValueContainerSchema=z['lazy'](()=>z['object']({'valueType':ValueTypeSchema['describe']('Value\x20type'),'value':SupportedValueSchema['describe']('Value')})['strict']()['describe']('Value\x20container\x20with\x20type\x20and\x20value'));export const SupportedValueUserSchema=z['union']([z['boolean'](),z['union']([AccountOrMark_AddressSchema,z['string']()]),z['string'](),z['number'](),z['array'](z['boolean']()),z['union']([ManyAccountOrMark_AddressSchema,z['array'](z['string']())]),z['array'](z['string']()),z['array'](z['number']()),z['array'](z['array'](z['number']()))])['describe']('User\x20available\x20supported\x20value\x20type');export const SupportedValueSchema=SupportedValueUserSchema['or'](ValueContainerSchema)['describe']('Supported\x20value\x20type');export const GuardIdentifierSchema=z['number']()['int']()['min'](0x0)['max'](0xff)['describe']('Identifier\x20(0-255)\x20for\x20data\x20lookup\x20in\x20Guard\x20table.');export const GuardTableItemBaseSchema=z['object']({'identifier':GuardIdentifierSchema,'b_submission':z['boolean']()['describe']('Whether\x20this\x20table\x20item\x27s\x20value\x20is\x20submitted\x20dynamically\x20at\x20Guard\x20trigger\x20time\x20(alloc_by_guard\x20call).\x20'+'\x0a\x0a'+'true\x20=\x20value\x20is\x20submitted\x20by\x20the\x20caller\x20when\x20triggering\x20the\x20Guard.\x20'+'Use\x20for\x20runtime-context-dependent\x20values\x20like\x20order\x20address,\x20user\x20address.\x20'+'The\x20\x27value\x27\x20field\x20is\x20ignored\x20when\x20b_submission=true;\x20the\x20caller\x20must\x20provide\x20it\x20via\x20submissions[].\x20'+'\x0a\x0a'+'false\x20=\x20value\x20is\x20static,\x20set\x20at\x20Guard\x20creation\x20time.\x20'+'Use\x20for\x20values\x20known\x20when\x20the\x20Guard\x20is\x20created:\x20expected\x20node\x20names,\x20expected\x20merchant\x20address,\x20expected\x20service\x20address.\x20'+'The\x20\x27value\x27\x20field\x20must\x20be\x20populated\x20and\x20will\x20be\x20stored\x20on-chain\x20permanently.\x20'+'\x0a\x0a'+'Rule\x20of\x20thumb:\x20if\x20the\x20value\x20is\x20the\x20SAME\x20for\x20all\x20future\x20Guard\x20triggers,\x20use\x20false.\x20'+'If\x20the\x20value\x20DIFFERS\x20per\x20trigger\x20(e.g.,\x20which\x20order\x20to\x20release\x20funds\x20for),\x20use\x20true.'),'value_type':ValueTypeUserSchema['describe']('Type\x20of\x20the\x20value\x20stored\x20in\x20`value`.\x20One\x20of:\x20Bool(0),\x20Address(1),\x20String(2),\x20U8(3),\x20U16(4),\x20U32(5),\x20U64(6),\x20U128(7),\x20U256(8),\x20VecBool(9),\x20VecAddress(10),\x20VecString(11),\x20VecU8(12),\x20VecU16(13),\x20VecU32(14),\x20VecU64(15),\x20VecU128(16),\x20VecU256(17),\x20VecVecU8(18).\x20'+'When\x20value_type=Address\x20(1),\x20the\x20`value`\x20field\x20accepts\x20a\x20hex\x20address\x20string,\x20a\x20LocalMark\x20name,\x20or\x20an\x20AccountOrMark_Address\x20object\x20—\x20see\x20`value`\x20field\x20description\x20for\x20details.'),'value':SupportedValueUserSchema['optional']()['describe']('The\x20actual\x20value\x20data.\x20Format\x20depends\x20on\x20`value_type`:\x0a'+'•\x20Bool:\x20true/false\x20(boolean)\x0a'+'•\x20Address\x20(CRITICAL\x20—\x20string\x20\x27Address\x27\x20is\x20NOT\x20a\x20placeholder):\x20a\x20hex\x20address\x20(e.g.\x20\x270x1234...\x27),\x20a\x20LocalMark\x20name\x20(e.g.\x20\x27my-service\x27\x20—\x20resolved\x20to\x20address\x20at\x20evaluation\x20time),\x20an\x20AccountOrMark_Address\x20object\x20(e.g.\x20{name_or_address:\x27my-service\x27}),\x20or\x20system\x20shorthand\x20(\x270xaaa\x27\x20=\x20EntityLinker,\x20\x270xaab\x27\x20=\x20EntityRegistrar).\x20The\x20literal\x20string\x20\x27Address\x27\x20itself\x20is\x20INVALID\x20—\x20it\x20would\x20be\x20treated\x20as\x20a\x20non-existent\x20LocalMark\x20name\x20and\x20fail.\x20Example:\x20value=\x270x2::wow::WOW<address>\x27\x20or\x20value=\x27my-permission\x27.\x0a'+'•\x20String:\x20any\x20string\x0a'+'•\x20U8/U16/U32/U64/U128/U256:\x20number\x20or\x20numeric\x20string\x20(e.g.\x2042\x20or\x20\x2742\x27)\x0a'+'•\x20Vec*\x20types:\x20arrays\x20of\x20the\x20corresponding\x20element\x20type\x0a'+'REQUIRED\x20when\x20b_submission=false.\x20OPTIONAL\x20when\x20b_submission=true\x20(value\x20is\x20supplied\x20at\x20evaluation\x20time\x20by\x20user\x20submission).'),'name':z['string']()['default']('')['refine'](a=>{if(a['length']===0x0)return!![];if(new TextEncoder()['encode'](a)['length']>MAX_NAME_LENGTH)return![];return!a['toLowerCase']()['startsWith']('0x');},{'message':'Name\x20must\x20be\x20at\x20most\x20'+MAX_NAME_LENGTH+'\x20BCS\x20characters\x20(UTF-8\x20bytes)\x20and\x20must\x20not\x20start\x20with\x20\x270x\x27.\x20Use\x20a\x20short\x20identifier\x20(e.g.\x20\x27order_id\x27,\x20\x27delivery_node\x27);\x20put\x20longer\x20explanations\x20in\x20the\x20Guard\x27s\x20\x27description\x27\x20field'})['describe']('Data\x20name\x20identifier.\x20MAX\x2064\x20BCS\x20characters\x20(Chinese\x20chars\x20count\x20as\x203-4\x20BCS\x20bytes\x20each).\x20'+'Use\x20short\x20identifiers\x20like\x20\x27order_id\x27,\x20\x27delivery_node\x27.\x20'+'Put\x20longer\x20descriptions\x20in\x20the\x20Guard\x27s\x20\x27description\x27\x20field,\x20NOT\x20here.')})['strict']()['describe']('Guard\x20table\x20item\x20(INPUT/CREATION\x20form).\x20DO\x20NOT\x20include\x20`object_type`\x20field\x20—\x20it\x20is\x20query-output\x20only\x20and\x20will\x20be\x20rejected\x20here.');export const GuardTableItemSchema=GuardTableItemBaseSchema['extend']({'object_type':ObjectTypeSchema['optional']()['describe']('OUTPUT-ONLY\x20(query\x20side):\x20Object\x20type\x20when\x20value_type\x20is\x20Address\x20and\x20represents\x20a\x20specific\x20object.\x20Auto-derived\x20by\x20the\x20system\x20—\x20DO\x20NOT\x20set\x20this\x20field\x20at\x20Guard\x20creation.')})['strict']()['describe']('Guard\x20table\x20item\x20(QUERY/OUTPUT\x20form\x20—\x20includes\x20auto-derived\x20object_type\x20field)');export const EntrypointSchema=z['enum']([ENTRYPOINT['Localnet'],ENTRYPOINT['Testnet'],ENTRYPOINT['Mainnet']])['describe']('Network\x20entrypoint:\x20Specifies\x20which\x20network\x20the\x20operation\x20occurs\x20on.\x20'+'FIX-010\x20cross-network\x20note:\x20LocalMark\x20names\x20are\x20scoped\x20per\x20network\x20(testnet\x20marks\x20are\x20invisible\x20on\x20mainnet\x20and\x20vice\x20versa).\x20'+'When\x20migrating\x20from\x20testnet\x20to\x20mainnet,\x20recreate\x20all\x20objects\x20on\x20mainnet\x20and\x20re-register\x20LocalMark\x20names\x20with\x20the\x20SAME\x20names\x20'+'to\x20keep\x20name-based\x20references\x20working\x20across\x20networks.\x20Recreate\x20all\x20objects\x20on\x20the\x20target\x20network\x20'+'via\x20onchain_operations\x20with\x20env.network=target_network,\x20then\x20re-register\x20the\x20LocalMark\x20names.');export const FaucetNetworkSchema=z['enum']([ENTRYPOINT['Localnet'],ENTRYPOINT['Testnet']])['describe']('Network\x20entrypoint\x20for\x20Faucet:\x20Specifies\x20which\x20network\x20the\x20operation\x20occurs\x20on');export const ObjectBaseSchema=z['object']({'object':z['string']()['describe']('Object\x20ID'),'type':ObjectTypeSchema['optional']()['describe']('Object\x20type'),'type_raw':z['string']()['optional']()['describe']('Raw\x20object\x20type'),'owner':z['union']([ObjectOwnerSchema,z['null']()])['optional']()['describe']('Object\x20owner'),'version':z['union']([z['string'](),z['number']()])['optional']()['describe']('Object\x20version'),'previousTransaction':z['string']()['optional']()['describe']('Previous\x20transaction\x20ID'),'cache_expire':CacheExpireTypeSchema['optional']()['describe']('Cache\x20expiration\x20time'),'query_name':z['string']()['optional']()['describe']('Original\x20query\x20name\x20or\x20address\x20used\x20to\x20retrieve\x20this\x20object'),'content_raw':z['any']()['optional']()['describe']('Raw\x20content\x20data\x20for\x20unknown\x20object\x20types'),'_guard_node_comments':z['array'](z['object']({'type':z['string'](),'description':z['string']()}))['optional']()['describe']('Additional\x20comments\x20for\x20Guard\x20node\x20instructions')})['passthrough']()['describe']('Object\x20base\x20information');export const QueryEnvSchema=z['object']({'no_cache':z['boolean']()['optional']()['describe']('Whether\x20to\x20disable\x20cache'),'network':EntrypointSchema['optional']()})['strict']()['describe']('Query\x20environment\x20parameters');export const ReceivedBalanceObjectSchema=z['object']({'id':z['string']()['describe']('Received\x20CoinWrapper\x20object\x20ID'),'balance':BalanceTypeSchema,'payment':z['string']()['describe']('Payment\x20object\x20ID'),'type':z['string']()['optional']()['describe']('Type\x20of\x20the\x20received\x20object\x20(or\x20inner\x20coin\x20type);\x20used\x20for\x20token_type\x20detection'),'version':z['string']()['optional']()['describe']('Object\x20version,\x20required\x20to\x20build\x20a\x20Receiving<T>\x20argument\x20for\x20owner_receive'),'digest':z['string']()['optional']()['describe']('Object\x20digest,\x20required\x20to\x20build\x20a\x20Receiving<T>\x20argument\x20for\x20owner_receive')})['strict']()['describe']('Received\x20CoinWrapper\x20object\x20record');export const CoinWrapperTokenTypeSchema=z['string']()['refine'](a=>{const b=a['match'](/^CoinWrapper<(.+)>$/),c=b?b[0x1]:a,d=c['split']('::');if(d['length']!==0x3)return![];const [e,f,g]=d;if(!isValidTokenTypeAddress(e))return![];if(!isValidMoveIdentifier(f))return![];if(!isValidMoveIdentifier(g))return![];return!![];},{'message':'Invalid\x20token\x20type\x20format.\x20Expected:\x20CoinWrapper<{address}::{module}::{struct}>\x20or\x20{address}::{module}::{struct}.\x20Example:\x20CoinWrapper<0x2::wow::WOW>\x20or\x200x2::wow::WOW'})['describe']('Token\x20type\x20in\x20format:\x20CoinWrapper<{address}::{module}::{struct}>\x20or\x20{address}::{module}::{struct}.\x20Example:\x20CoinWrapper<0x2::wow::WOW>');export const ReceivedBalanceSchema=z['object']({'balance':BalanceTypeSchema,'token_type':CoinWrapperTokenTypeSchema['describe']('Asset\x20type\x20of\x20Coin\x20objects.\x20Supports\x20CoinWrapper<...>\x20format\x20for\x20order\x20receive\x20operations.'),'received':z['array'](ReceivedBalanceObjectSchema)['describe']('Received\x20records\x20of\x20Coin\x20objects')})['strict']()['describe']('Received\x20record\x20of\x20Coin\x20objects');export const ReceivedBalanceOrRecentlySchema=z['union']([ReceivedBalanceSchema,z['literal']('recently')])['describe']('Specified\x20received\x20balance\x20record\x20or\x20all\x20recently\x20received\x20balance\x20record');export const ReceivedNormalSchema=z['object']({'id':z['string']()['nonempty']()['describe']('Received\x20object\x20ID'),'type':z['string']()['nonempty']()['describe']('Object\x20type'),'content_raw':z['any']()['optional']()['describe']('Raw\x20content\x20data'),'version':z['string']()['optional']()['describe']('Object\x20version,\x20required\x20to\x20build\x20a\x20Receiving<T>\x20argument\x20for\x20owner_receive'),'digest':z['string']()['optional']()['describe']('Object\x20digest,\x20required\x20to\x20build\x20a\x20Receiving<T>\x20argument\x20for\x20owner_receive')})['strict']()['describe']('Received\x20normal\x20object\x20record');export const ReceivedObjectsOrRecentlySchema=z['union']([z['array'](ReceivedNormalSchema),ReceivedBalanceSchema,z['literal']('recently')])['describe']('Specified\x20received\x20object\x20records\x20or\x20all\x20recently\x20received\x20object\x20records');export const RECEIVE_FORMAT_BLOCK_OBJECTS='\x0a\x0aACCEPTED\x20FORMATS\x20(F-06\x20unified\x20receive\x20operation\x20block):\x0a'+'•\x20\x27recently\x27\x20(string\x20literal)\x20—\x20auto-query\x20and\x20receive\x20ALL\x20recently\x20received\x20objects.\x0a'+'\x20\x20Use\x20this\x20for\x20the\x20common\x20case:\x20\x22withdraw\x20everything\x20the\x20object\x20has\x20received.\x22\x0a'+'\x20\x20Example:\x20receive:\x20\x27recently\x27\x0a'+'•\x20ReceivedNormal[]\x20(array)\x20—\x20explicit\x20list\x20of\x20received\x20objects\x20to\x20unwrap.\x0a'+'\x20\x20Use\x20this\x20when\x20you\x20want\x20to\x20receive\x20specific\x20objects\x20only\x20(not\x20all).\x0a'+'\x20\x20Example:\x20receive:\x20[{id:\x20\x270xobj1\x27,\x20type:\x20\x270x2::coin::Coin<0x2::wow::WOW>\x27}]\x0a'+'•\x20ReceivedBalance\x20({token_type,\x20balance,\x20received:\x20[{id,\x20balance,\x20payment}]})\x20—\x0a'+'\x20\x20receive\x20a\x20balance\x20record\x20from\x20a\x20specific\x20Payment/payer.\x0a'+'\x20\x20Use\x20this\x20for\x20precise\x20balance\x20targeting\x20(advanced\x20—\x20usually\x20after\x20querying\x0a'+'\x20\x20the\x20object\x27s\x20received\x20history\x20via\x20query_received).\x0a'+'\x20\x20Example:\x20receive:\x20{token_type:\x20\x270x2::wow::WOW\x27,\x20balance:\x201000000,\x20received:\x20[{id:\x20\x270xrec1\x27,\x20balance:\x201000000,\x20payment:\x20\x270xpay1\x27}]}\x0a'+'ANTI-PATTERN:\x20do\x20NOT\x20wrap\x20in\x20{result:\x20...}\x20—\x20pass\x20the\x20value\x20directly.';export const RECEIVE_FORMAT_BLOCK_BALANCE='\x0a\x0aACCEPTED\x20FORMATS\x20(F-06\x20unified\x20receive\x20operation\x20block):\x0a'+'•\x20\x27recently\x27\x20(string\x20literal)\x20—\x20auto-query\x20and\x20receive\x20ALL\x20recently\x20received\x20balance.\x0a'+'\x20\x20Use\x20this\x20for\x20the\x20common\x20case:\x20\x22deposit\x20all\x20recently\x20received\x20coins\x20into\x20pending\x20balance.\x22\x0a'+'\x20\x20Example:\x20receive:\x20\x27recently\x27\x0a'+'•\x20ReceivedBalance\x20({token_type,\x20balance,\x20received:\x20[{id,\x20balance,\x20payment}]})\x20—\x0a'+'\x20\x20receive\x20a\x20specific\x20balance\x20record\x20from\x20a\x20Payment/payer.\x0a'+'\x20\x20Use\x20this\x20when\x20targeting\x20a\x20specific\x20received\x20balance\x20(advanced).\x0a'+'\x20\x20Example:\x20receive:\x20{token_type:\x20\x270x2::wow::WOW\x27,\x20balance:\x201000000,\x20received:\x20[{id:\x20\x270xrec1\x27,\x20balance:\x201000000,\x20payment:\x20\x270xpay1\x27}]}\x0a'+'ANTI-PATTERN:\x20do\x20NOT\x20wrap\x20in\x20{result:\x20...}\x20—\x20pass\x20the\x20value\x20directly.';export const QueryReceivedResultSchema=z['object']({'result':z['union']([ReceivedBalanceSchema,z['array'](ReceivedNormalSchema)])['describe']('Received\x20CoinWrapper\x20object\x20record\x20or\x20received\x20other\x20objects\x20array')})['strict']()['describe']('Query\x20received\x20result');
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{describe,it,expect}from'vitest';import{TokenTypeSchema,CoinWrapperTokenTypeSchema}from'./index.js';describe('TokenTypeSchema\x20address\x20forms\x20(T-SCHEMA-URL)',()=>{it('accepts\x20canonical\x20short\x20WOW\x20type',()=>{expect(TokenTypeSchema['safeParse']('0x2::wow::WOW')['success'])['toBe'](!![]);}),it('accepts\x20zero-padded\x20long\x20WOW\x20type',()=>{const a='0x0000000000000000000000000000000000000000000000000000000000000002::wow::WOW';expect(TokenTypeSchema['safeParse'](a)['success'])['toBe'](!![]);}),it('accepts\x20short-form\x20non-WOW\x20builtin\x20token\x20types',()=>{expect(TokenTypeSchema['safeParse']('0x5::usdc::USDC')['success'])['toBe'](!![]),expect(TokenTypeSchema['safeParse']('0xaaa::eth::ETH')['success'])['toBe'](!![]);}),it('rejects\x20malformed\x20addresses\x20and\x20shapes',()=>{expect(TokenTypeSchema['safeParse']('0x::wow::WOW')['success'])['toBe'](![]),expect(TokenTypeSchema['safeParse']('0xZZ::wow::WOW')['success'])['toBe'](![]),expect(TokenTypeSchema['safeParse']('wow::WOW')['success'])['toBe'](![]),expect(TokenTypeSchema['safeParse']('0x0000000000000000000000000000000000000000000000000000000000000000FF::wow::WOW')['success'])['toBe'](![]);}),it('CoinWrapperTokenTypeSchema\x20accepts\x20the\x20same\x20forms',()=>{expect(CoinWrapperTokenTypeSchema['safeParse']('CoinWrapper<0x2::wow::WOW>')['success'])['toBe'](!![]),expect(CoinWrapperTokenTypeSchema['safeParse']('CoinWrapper<0x5::usdc::USDC>')['success'])['toBe'](!![]),expect(CoinWrapperTokenTypeSchema['safeParse']('0x2::wow::WOW')['success'])['toBe'](!![]),expect(CoinWrapperTokenTypeSchema['safeParse']('CoinWrapper<wow::WOW>')['success'])['toBe'](![]);});});
|