@ottochain/sdk 2.2.5 → 2.4.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/cjs/apps/contracts/index.js +15 -8
- package/dist/cjs/apps/contracts/state-machines/contract-agreement.js +89 -46
- package/dist/cjs/apps/contracts/state-machines/contract-escrow.js +152 -45
- package/dist/cjs/apps/contracts/state-machines/contract-universal.js +40 -8
- package/dist/cjs/apps/corporate/index.js +2 -2
- package/dist/cjs/apps/corporate/state-machines/corp-board.js +169 -59
- package/dist/cjs/apps/corporate/state-machines/corp-entity.js +245 -47
- package/dist/cjs/apps/corporate/state-machines/corp-securities.js +407 -99
- package/dist/cjs/apps/corporate/state-machines/corp-shareholders.js +151 -37
- package/dist/cjs/apps/governance/index.js +14 -14
- package/dist/cjs/apps/governance/state-machines/dao-multisig.js +85 -43
- package/dist/cjs/apps/governance/state-machines/dao-reputation.js +73 -43
- package/dist/cjs/apps/governance/state-machines/dao-single.js +55 -14
- package/dist/cjs/apps/governance/state-machines/dao-token.js +103 -45
- package/dist/cjs/apps/governance/state-machines/governance-simple.js +129 -65
- package/dist/cjs/apps/governance/state-machines/governance-universal.js +29 -5
- package/dist/cjs/apps/identity/constants.js +55 -14
- package/dist/cjs/apps/identity/index.js +27 -11
- package/dist/cjs/apps/identity/state-machines/identity-agent.js +57 -9
- package/dist/cjs/apps/identity/state-machines/identity-oracle.js +70 -27
- package/dist/cjs/apps/identity/state-machines/identity-registry.js +288 -0
- package/dist/cjs/apps/identity/state-machines/identity-universal.js +30 -6
- package/dist/cjs/apps/identity/state-machines/index.js +3 -1
- package/dist/cjs/apps/index.js +19 -8
- package/dist/cjs/apps/lending/assets.js +223 -0
- package/dist/cjs/apps/lending/credit-scoring.js +87 -0
- package/dist/cjs/apps/lending/eligibility.js +121 -0
- package/dist/cjs/apps/lending/index.js +91 -0
- package/dist/cjs/apps/lending/state-machines/index.js +9 -0
- package/dist/cjs/apps/lending/state-machines/lending-zk-loan.js +412 -0
- package/dist/cjs/apps/markets/index.js +21 -11
- package/dist/cjs/apps/markets/state-machines/market-auction.js +44 -19
- package/dist/cjs/apps/markets/state-machines/market-crowdfund.js +54 -29
- package/dist/cjs/apps/markets/state-machines/market-group-buy.js +53 -31
- package/dist/cjs/apps/markets/state-machines/market-prediction.js +120 -61
- package/dist/cjs/apps/markets/state-machines/market-universal.js +50 -10
- package/dist/cjs/apps/oracles/index.js +2 -2
- package/dist/cjs/errors.js +3 -3
- package/dist/cjs/generated/google/protobuf/struct.js +4 -4
- package/dist/cjs/generated/index.js +11 -7
- package/dist/cjs/generated/openapi.js +6 -0
- package/dist/cjs/generated/ottochain/apps/contracts/v1/contract.js +50 -50
- package/dist/cjs/generated/ottochain/apps/corporate/v1/corporate.js +19 -20
- package/dist/cjs/generated/ottochain/apps/governance/v1/governance.js +13 -13
- package/dist/cjs/generated/ottochain/apps/identity/v1/attestation.js +4 -4
- package/dist/cjs/generated/ottochain/apps/identity/v1/identity.js +124 -130
- package/dist/cjs/generated/ottochain/apps/markets/v1/market.js +107 -107
- package/dist/cjs/generated/ottochain/v1/common.js +1722 -1
- package/dist/cjs/generated/ottochain/v1/fiber.js +355 -5
- package/dist/cjs/generated/ottochain/v1/messages.js +775 -3
- package/dist/cjs/generated/ottochain/v1/records.js +350 -3
- package/dist/cjs/index.js +45 -7
- package/dist/cjs/openapi.js +2 -0
- package/dist/cjs/ottochain/drop-nulls.js +1 -2
- package/dist/cjs/ottochain/genesis-manifest.js +193 -0
- package/dist/cjs/ottochain/index.js +27 -13
- package/dist/cjs/ottochain/metagraph-client.js +65 -8
- package/dist/cjs/ottochain/snapshot.js +11 -12
- package/dist/cjs/ottochain/transaction.js +57 -14
- package/dist/cjs/ottochain/types.js +19 -1
- package/dist/cjs/privacy/index.js +14 -0
- package/dist/cjs/privacy/sealed-bid.js +210 -0
- package/dist/cjs/privacy/shield-app.js +131 -0
- package/dist/cjs/schema/effects.js +40 -0
- package/dist/cjs/schema/fiber-app.js +19 -13
- package/dist/cjs/schema/guard-lint.js +352 -0
- package/dist/cjs/schema/guards.js +246 -0
- package/dist/cjs/signing.js +80 -0
- package/dist/cjs/types.js +2 -3
- package/dist/cjs/validation.js +8 -8
- package/dist/cjs/verify.js +9 -4
- package/dist/cjs/zk/commit.js +53 -0
- package/dist/cjs/zk/guard.js +107 -0
- package/dist/cjs/zk/index.js +48 -0
- package/dist/cjs/zk/preimage.js +37 -0
- package/dist/cjs/zk/prover.js +87 -0
- package/dist/cjs/zk/registry.js +62 -0
- package/dist/cjs/zk/types.js +28 -0
- package/dist/cjs/zk/witness.js +19 -0
- package/dist/esm/apps/contracts/index.js +7 -3
- package/dist/esm/apps/contracts/state-machines/contract-agreement.js +89 -46
- package/dist/esm/apps/contracts/state-machines/contract-escrow.js +152 -45
- package/dist/esm/apps/contracts/state-machines/contract-universal.js +40 -8
- package/dist/esm/apps/corporate/state-machines/corp-board.js +169 -59
- package/dist/esm/apps/corporate/state-machines/corp-entity.js +245 -47
- package/dist/esm/apps/corporate/state-machines/corp-securities.js +407 -99
- package/dist/esm/apps/corporate/state-machines/corp-shareholders.js +151 -37
- package/dist/esm/apps/governance/state-machines/dao-multisig.js +85 -43
- package/dist/esm/apps/governance/state-machines/dao-reputation.js +73 -43
- package/dist/esm/apps/governance/state-machines/dao-single.js +55 -14
- package/dist/esm/apps/governance/state-machines/dao-token.js +103 -45
- package/dist/esm/apps/governance/state-machines/governance-simple.js +129 -65
- package/dist/esm/apps/governance/state-machines/governance-universal.js +29 -5
- package/dist/esm/apps/identity/constants.js +51 -12
- package/dist/esm/apps/identity/index.js +12 -7
- package/dist/esm/apps/identity/state-machines/identity-agent.js +57 -9
- package/dist/esm/apps/identity/state-machines/identity-oracle.js +70 -27
- package/dist/esm/apps/identity/state-machines/identity-registry.js +285 -0
- package/dist/esm/apps/identity/state-machines/identity-universal.js +30 -6
- package/dist/esm/apps/identity/state-machines/index.js +1 -0
- package/dist/esm/apps/index.js +1 -0
- package/dist/esm/apps/lending/assets.js +207 -0
- package/dist/esm/apps/lending/credit-scoring.js +81 -0
- package/dist/esm/apps/lending/eligibility.js +115 -0
- package/dist/esm/apps/lending/index.js +69 -0
- package/dist/esm/apps/lending/state-machines/index.js +5 -0
- package/dist/esm/apps/lending/state-machines/lending-zk-loan.js +409 -0
- package/dist/esm/apps/markets/index.js +8 -4
- package/dist/esm/apps/markets/state-machines/market-auction.js +44 -19
- package/dist/esm/apps/markets/state-machines/market-crowdfund.js +54 -29
- package/dist/esm/apps/markets/state-machines/market-group-buy.js +53 -31
- package/dist/esm/apps/markets/state-machines/market-prediction.js +120 -61
- package/dist/esm/apps/markets/state-machines/market-universal.js +50 -10
- package/dist/esm/generated/index.js +9 -5
- package/dist/esm/generated/openapi.js +5 -0
- package/dist/esm/generated/ottochain/apps/contracts/v1/contract.js +46 -46
- package/dist/esm/generated/ottochain/apps/identity/v1/identity.js +114 -120
- package/dist/esm/generated/ottochain/apps/markets/v1/market.js +100 -100
- package/dist/esm/generated/ottochain/v1/common.js +1718 -0
- package/dist/esm/generated/ottochain/v1/fiber.js +351 -1
- package/dist/esm/generated/ottochain/v1/messages.js +774 -2
- package/dist/esm/generated/ottochain/v1/records.js +349 -2
- package/dist/esm/index.js +23 -2
- package/dist/esm/openapi.js +1 -0
- package/dist/esm/ottochain/genesis-manifest.js +189 -0
- package/dist/esm/ottochain/index.js +4 -3
- package/dist/esm/ottochain/metagraph-client.js +65 -8
- package/dist/esm/ottochain/snapshot.js +4 -4
- package/dist/esm/ottochain/transaction.js +43 -3
- package/dist/esm/ottochain/types.js +18 -0
- package/dist/esm/privacy/index.js +6 -0
- package/dist/esm/privacy/sealed-bid.js +206 -0
- package/dist/esm/privacy/shield-app.js +127 -0
- package/dist/esm/schema/effects.js +35 -0
- package/dist/esm/schema/fiber-app.js +13 -6
- package/dist/esm/schema/guard-lint.js +346 -0
- package/dist/esm/schema/guards.js +229 -0
- package/dist/esm/signing.js +74 -0
- package/dist/esm/verify.js +8 -2
- package/dist/esm/zk/commit.js +44 -0
- package/dist/esm/zk/guard.js +99 -0
- package/dist/esm/zk/index.js +19 -0
- package/dist/esm/zk/preimage.js +30 -0
- package/dist/esm/zk/prover.js +82 -0
- package/dist/esm/zk/registry.js +55 -0
- package/dist/esm/zk/types.js +25 -0
- package/dist/esm/zk/witness.js +15 -0
- package/dist/types/apps/contracts/index.d.ts +159 -227
- package/dist/types/apps/contracts/state-machines/contract-agreement.d.ts +50 -101
- package/dist/types/apps/contracts/state-machines/contract-escrow.d.ts +86 -120
- package/dist/types/apps/contracts/state-machines/contract-universal.d.ts +20 -4
- package/dist/types/apps/corporate/index.d.ts +1040 -304
- package/dist/types/apps/corporate/state-machines/corp-board.d.ts +188 -52
- package/dist/types/apps/corporate/state-machines/corp-entity.d.ts +267 -62
- package/dist/types/apps/corporate/state-machines/corp-securities.d.ts +355 -131
- package/dist/types/apps/corporate/state-machines/corp-shareholders.d.ts +225 -53
- package/dist/types/apps/governance/index.d.ts +396 -417
- package/dist/types/apps/governance/state-machines/dao-multisig.d.ts +92 -95
- package/dist/types/apps/governance/state-machines/dao-reputation.d.ts +57 -69
- package/dist/types/apps/governance/state-machines/dao-single.d.ts +40 -50
- package/dist/types/apps/governance/state-machines/dao-token.d.ts +80 -53
- package/dist/types/apps/governance/state-machines/governance-simple.d.ts +107 -121
- package/dist/types/apps/governance/state-machines/governance-universal.d.ts +17 -5
- package/dist/types/apps/identity/constants.d.ts +32 -4
- package/dist/types/apps/identity/index.d.ts +449 -100
- package/dist/types/apps/identity/state-machines/identity-agent.d.ts +30 -0
- package/dist/types/apps/identity/state-machines/identity-oracle.d.ts +41 -87
- package/dist/types/apps/identity/state-machines/identity-registry.d.ts +379 -0
- package/dist/types/apps/identity/state-machines/identity-universal.d.ts +15 -0
- package/dist/types/apps/identity/state-machines/index.d.ts +1 -0
- package/dist/types/apps/index.d.ts +1 -0
- package/dist/types/apps/lending/assets.d.ts +258 -0
- package/dist/types/apps/lending/credit-scoring.d.ts +80 -0
- package/dist/types/apps/lending/eligibility.d.ts +83 -0
- package/dist/types/apps/lending/index.d.ts +548 -0
- package/dist/types/apps/lending/state-machines/index.d.ts +5 -0
- package/dist/types/apps/lending/state-machines/lending-zk-loan.d.ts +528 -0
- package/dist/types/apps/markets/index.d.ts +184 -204
- package/dist/types/apps/markets/state-machines/market-auction.d.ts +25 -37
- package/dist/types/apps/markets/state-machines/market-crowdfund.d.ts +26 -34
- package/dist/types/apps/markets/state-machines/market-group-buy.d.ts +31 -43
- package/dist/types/apps/markets/state-machines/market-prediction.d.ts +67 -72
- package/dist/types/apps/markets/state-machines/market-universal.d.ts +30 -10
- package/dist/types/generated/index.d.ts +5 -5
- package/dist/types/generated/openapi.d.ts +1257 -0
- package/dist/types/generated/ottochain/apps/contracts/v1/contract.d.ts +5 -5
- package/dist/types/generated/ottochain/apps/identity/v1/identity.d.ts +12 -12
- package/dist/types/generated/ottochain/apps/markets/v1/market.d.ts +11 -11
- package/dist/types/generated/ottochain/v1/common.d.ts +228 -0
- package/dist/types/generated/ottochain/v1/fiber.d.ts +32 -1
- package/dist/types/generated/ottochain/v1/messages.d.ts +84 -0
- package/dist/types/generated/ottochain/v1/records.d.ts +34 -0
- package/dist/types/index.d.ts +8 -2
- package/dist/types/openapi.d.ts +22 -0
- package/dist/types/ottochain/genesis-manifest.d.ts +130 -0
- package/dist/types/ottochain/index.d.ts +6 -5
- package/dist/types/ottochain/metagraph-client.d.ts +49 -7
- package/dist/types/ottochain/snapshot.d.ts +6 -6
- package/dist/types/ottochain/transaction.d.ts +33 -1
- package/dist/types/ottochain/types.d.ts +602 -11
- package/dist/types/privacy/index.d.ts +6 -0
- package/dist/types/privacy/sealed-bid.d.ts +348 -0
- package/dist/types/privacy/shield-app.d.ts +48 -0
- package/dist/types/schema/effects.d.ts +34 -0
- package/dist/types/schema/fiber-app.d.ts +41 -3
- package/dist/types/schema/guard-lint.d.ts +111 -0
- package/dist/types/schema/guards.d.ts +134 -0
- package/dist/types/signing.d.ts +45 -0
- package/dist/types/validation.d.ts +22 -217
- package/dist/types/verify.d.ts +4 -0
- package/dist/types/zk/commit.d.ts +28 -0
- package/dist/types/zk/guard.d.ts +46 -0
- package/dist/types/zk/index.d.ts +19 -0
- package/dist/types/zk/preimage.d.ts +10 -0
- package/dist/types/zk/prover.d.ts +34 -0
- package/dist/types/zk/registry.d.ts +34 -0
- package/dist/types/zk/types.d.ts +33 -0
- package/dist/types/zk/witness.d.ts +40 -0
- package/package.json +52 -35
- package/dist/cjs/ottochain/normalize.js +0 -186
- package/dist/esm/ottochain/normalize.js +0 -179
- package/dist/types/ottochain/normalize.d.ts +0 -79
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* @example
|
|
8
8
|
* ```typescript
|
|
9
9
|
* import {
|
|
10
|
-
*
|
|
10
|
+
* State,
|
|
11
11
|
* Contract,
|
|
12
12
|
* getContractDefinition,
|
|
13
13
|
* CONTRACTS_DEFINITIONS
|
|
@@ -20,10 +20,14 @@
|
|
|
20
20
|
* @packageDocumentation
|
|
21
21
|
*/
|
|
22
22
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
-
exports.
|
|
24
|
-
|
|
23
|
+
exports.CONTRACTS_DEFINITIONS = exports.contractEscrowDef = exports.contractAgreementDef = exports.contractUniversalDef = exports.contractStateToJSON = exports.contractStateFromJSON = exports.ContractState = exports.stateToJSON = exports.stateFromJSON = exports.ContractDefinition = exports.DisputeContractRequest = exports.RejectContractRequest = exports.CompleteContractRequest = exports.AcceptContractRequest = exports.ProposeContractRequest = exports.Contract = exports.State = void 0;
|
|
24
|
+
exports.getContractDefinition = getContractDefinition;
|
|
25
|
+
exports.getEscrowDefinition = getEscrowDefinition;
|
|
26
|
+
// Re-export generated protobuf types (source of truth).
|
|
27
|
+
// The nested lifecycle enum dropped its app prefix in the proto; under this
|
|
28
|
+
// app-scoped entrypoint it is unambiguously State.
|
|
25
29
|
var contract_js_1 = require("../../generated/ottochain/apps/contracts/v1/contract.js");
|
|
26
|
-
Object.defineProperty(exports, "
|
|
30
|
+
Object.defineProperty(exports, "State", { enumerable: true, get: function () { return contract_js_1.State; } });
|
|
27
31
|
Object.defineProperty(exports, "Contract", { enumerable: true, get: function () { return contract_js_1.Contract; } });
|
|
28
32
|
Object.defineProperty(exports, "ProposeContractRequest", { enumerable: true, get: function () { return contract_js_1.ProposeContractRequest; } });
|
|
29
33
|
Object.defineProperty(exports, "AcceptContractRequest", { enumerable: true, get: function () { return contract_js_1.AcceptContractRequest; } });
|
|
@@ -31,8 +35,13 @@ Object.defineProperty(exports, "CompleteContractRequest", { enumerable: true, ge
|
|
|
31
35
|
Object.defineProperty(exports, "RejectContractRequest", { enumerable: true, get: function () { return contract_js_1.RejectContractRequest; } });
|
|
32
36
|
Object.defineProperty(exports, "DisputeContractRequest", { enumerable: true, get: function () { return contract_js_1.DisputeContractRequest; } });
|
|
33
37
|
Object.defineProperty(exports, "ContractDefinition", { enumerable: true, get: function () { return contract_js_1.ContractDefinition; } });
|
|
34
|
-
Object.defineProperty(exports, "
|
|
35
|
-
Object.defineProperty(exports, "
|
|
38
|
+
Object.defineProperty(exports, "stateFromJSON", { enumerable: true, get: function () { return contract_js_1.stateFromJSON; } });
|
|
39
|
+
Object.defineProperty(exports, "stateToJSON", { enumerable: true, get: function () { return contract_js_1.stateToJSON; } });
|
|
40
|
+
// Deprecated app-prefixed alias (renamed to State); kept for compat.
|
|
41
|
+
var contract_js_2 = require("../../generated/ottochain/apps/contracts/v1/contract.js");
|
|
42
|
+
Object.defineProperty(exports, "ContractState", { enumerable: true, get: function () { return contract_js_2.State; } });
|
|
43
|
+
Object.defineProperty(exports, "contractStateFromJSON", { enumerable: true, get: function () { return contract_js_2.stateFromJSON; } });
|
|
44
|
+
Object.defineProperty(exports, "contractStateToJSON", { enumerable: true, get: function () { return contract_js_2.stateToJSON; } });
|
|
36
45
|
// ---------------------------------------------------------------------------
|
|
37
46
|
// State Machine Definitions (generated from JSON at build time)
|
|
38
47
|
// ---------------------------------------------------------------------------
|
|
@@ -53,9 +62,7 @@ exports.CONTRACTS_DEFINITIONS = {
|
|
|
53
62
|
function getContractDefinition(type = "agreement") {
|
|
54
63
|
return exports.CONTRACTS_DEFINITIONS[type];
|
|
55
64
|
}
|
|
56
|
-
exports.getContractDefinition = getContractDefinition;
|
|
57
65
|
/** @deprecated Use getContractDefinition('escrow') */
|
|
58
66
|
function getEscrowDefinition() {
|
|
59
67
|
return index_js_1.contractEscrowDef;
|
|
60
68
|
}
|
|
61
|
-
exports.getEscrowDefinition = getEscrowDefinition;
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.contractAgreementDef = void 0;
|
|
4
4
|
const fiber_app_js_1 = require("../../../schema/fiber-app.js");
|
|
5
|
+
const guards_js_1 = require("../../../schema/guards.js");
|
|
5
6
|
/**
|
|
6
7
|
* Two-party agreement with mutual completion attestation and dispute resolution.
|
|
7
8
|
*/
|
|
@@ -36,7 +37,7 @@ exports.contractAgreementDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
36
37
|
},
|
|
37
38
|
},
|
|
38
39
|
createSchema: {
|
|
39
|
-
required: ["proposer", "counterparty"],
|
|
40
|
+
required: ["proposer", "counterparty", "arbitrator"],
|
|
40
41
|
properties: {
|
|
41
42
|
proposer: {
|
|
42
43
|
type: "address",
|
|
@@ -48,6 +49,11 @@ exports.contractAgreementDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
48
49
|
description: "DAG address of the counterparty",
|
|
49
50
|
immutable: true,
|
|
50
51
|
},
|
|
52
|
+
arbitrator: {
|
|
53
|
+
type: "address",
|
|
54
|
+
description: "DAG address of the arbitrator authorized to resolve a dispute",
|
|
55
|
+
immutable: true,
|
|
56
|
+
},
|
|
51
57
|
},
|
|
52
58
|
},
|
|
53
59
|
stateSchema: {
|
|
@@ -55,6 +61,7 @@ exports.contractAgreementDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
55
61
|
status: { type: "string" },
|
|
56
62
|
proposer: { type: "address" },
|
|
57
63
|
counterparty: { type: "address" },
|
|
64
|
+
arbitrator: { type: "address", immutable: true },
|
|
58
65
|
completions: { type: "array" },
|
|
59
66
|
acceptedAt: { type: "integer", nullable: true },
|
|
60
67
|
rejectedAt: { type: "integer", nullable: true },
|
|
@@ -78,21 +85,66 @@ exports.contractAgreementDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
78
85
|
dispute: { properties: { reason: { type: "string" } } },
|
|
79
86
|
resolve: {
|
|
80
87
|
properties: {
|
|
81
|
-
judicialRuling: { type: "boolean", nullable: true },
|
|
82
|
-
proposerApproves: { type: "boolean", nullable: true },
|
|
83
|
-
counterpartyApproves: { type: "boolean", nullable: true },
|
|
84
88
|
resolution: { type: "string" },
|
|
85
89
|
rulingId: { type: "string", nullable: true },
|
|
86
90
|
},
|
|
87
91
|
},
|
|
88
92
|
},
|
|
89
93
|
states: {
|
|
90
|
-
PROPOSED: {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
94
|
+
PROPOSED: {
|
|
95
|
+
id: "PROPOSED",
|
|
96
|
+
isFinal: false,
|
|
97
|
+
metadata: {
|
|
98
|
+
label: "Proposed",
|
|
99
|
+
description: "Agreement proposed; awaiting the counterparty",
|
|
100
|
+
category: "initial",
|
|
101
|
+
},
|
|
102
|
+
},
|
|
103
|
+
ACTIVE: {
|
|
104
|
+
id: "ACTIVE",
|
|
105
|
+
isFinal: false,
|
|
106
|
+
metadata: {
|
|
107
|
+
label: "Active",
|
|
108
|
+
description: "Agreement accepted and in effect",
|
|
109
|
+
category: "active",
|
|
110
|
+
},
|
|
111
|
+
},
|
|
112
|
+
COMPLETED: {
|
|
113
|
+
id: "COMPLETED",
|
|
114
|
+
isFinal: true,
|
|
115
|
+
metadata: {
|
|
116
|
+
label: "Completed",
|
|
117
|
+
description: "Agreement completed and attested (terminal)",
|
|
118
|
+
category: "terminal",
|
|
119
|
+
},
|
|
120
|
+
},
|
|
121
|
+
DISPUTED: {
|
|
122
|
+
id: "DISPUTED",
|
|
123
|
+
isFinal: false,
|
|
124
|
+
metadata: {
|
|
125
|
+
label: "Disputed",
|
|
126
|
+
description: "A party has raised a dispute; awaiting resolution",
|
|
127
|
+
category: "pending",
|
|
128
|
+
},
|
|
129
|
+
},
|
|
130
|
+
REJECTED: {
|
|
131
|
+
id: "REJECTED",
|
|
132
|
+
isFinal: true,
|
|
133
|
+
metadata: {
|
|
134
|
+
label: "Rejected",
|
|
135
|
+
description: "Proposal rejected by the counterparty (terminal)",
|
|
136
|
+
category: "terminal",
|
|
137
|
+
},
|
|
138
|
+
},
|
|
139
|
+
CANCELLED: {
|
|
140
|
+
id: "CANCELLED",
|
|
141
|
+
isFinal: true,
|
|
142
|
+
metadata: {
|
|
143
|
+
label: "Cancelled",
|
|
144
|
+
description: "Agreement cancelled before completion (terminal)",
|
|
145
|
+
category: "terminal",
|
|
146
|
+
},
|
|
147
|
+
},
|
|
96
148
|
},
|
|
97
149
|
initialState: "PROPOSED",
|
|
98
150
|
transitions: [
|
|
@@ -100,11 +152,11 @@ exports.contractAgreementDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
100
152
|
from: "PROPOSED",
|
|
101
153
|
to: "ACTIVE",
|
|
102
154
|
eventName: "accept",
|
|
103
|
-
guard:
|
|
155
|
+
guard: (0, guards_js_1.signerIsParty)("state.counterparty"),
|
|
104
156
|
effect: {
|
|
105
157
|
merge: [
|
|
106
158
|
{ var: "state" },
|
|
107
|
-
{ status: "ACTIVE", acceptedAt: { var: "$
|
|
159
|
+
{ status: "ACTIVE", acceptedAt: { var: "$ordinal" } },
|
|
108
160
|
],
|
|
109
161
|
},
|
|
110
162
|
dependencies: [],
|
|
@@ -113,13 +165,13 @@ exports.contractAgreementDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
113
165
|
from: "PROPOSED",
|
|
114
166
|
to: "REJECTED",
|
|
115
167
|
eventName: "reject",
|
|
116
|
-
guard:
|
|
168
|
+
guard: (0, guards_js_1.signerIsParty)("state.counterparty"),
|
|
117
169
|
effect: {
|
|
118
170
|
merge: [
|
|
119
171
|
{ var: "state" },
|
|
120
172
|
{
|
|
121
173
|
status: "REJECTED",
|
|
122
|
-
rejectedAt: { var: "$
|
|
174
|
+
rejectedAt: { var: "$ordinal" },
|
|
123
175
|
rejectReason: { var: "event.reason" },
|
|
124
176
|
},
|
|
125
177
|
],
|
|
@@ -130,11 +182,11 @@ exports.contractAgreementDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
130
182
|
from: "PROPOSED",
|
|
131
183
|
to: "CANCELLED",
|
|
132
184
|
eventName: "cancel",
|
|
133
|
-
guard:
|
|
185
|
+
guard: (0, guards_js_1.signerIsParty)("state.proposer"),
|
|
134
186
|
effect: {
|
|
135
187
|
merge: [
|
|
136
188
|
{ var: "state" },
|
|
137
|
-
{ status: "CANCELLED", cancelledAt: { var: "$
|
|
189
|
+
{ status: "CANCELLED", cancelledAt: { var: "$ordinal" } },
|
|
138
190
|
],
|
|
139
191
|
},
|
|
140
192
|
dependencies: [],
|
|
@@ -145,14 +197,7 @@ exports.contractAgreementDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
145
197
|
eventName: "submit_completion",
|
|
146
198
|
guard: {
|
|
147
199
|
and: [
|
|
148
|
-
|
|
149
|
-
or: [
|
|
150
|
-
{ "===": [{ var: "event.agent" }, { var: "state.proposer" }] },
|
|
151
|
-
{
|
|
152
|
-
"===": [{ var: "event.agent" }, { var: "state.counterparty" }],
|
|
153
|
-
},
|
|
154
|
-
],
|
|
155
|
-
},
|
|
200
|
+
(0, guards_js_1.signerIsAnyParty)(["state.proposer", "state.counterparty"]),
|
|
156
201
|
{
|
|
157
202
|
"!": [
|
|
158
203
|
{
|
|
@@ -176,7 +221,7 @@ exports.contractAgreementDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
176
221
|
{
|
|
177
222
|
agent: { var: "event.agent" },
|
|
178
223
|
proof: { var: "event.proof" },
|
|
179
|
-
submittedAt: { var: "$
|
|
224
|
+
submittedAt: { var: "$ordinal" },
|
|
180
225
|
},
|
|
181
226
|
],
|
|
182
227
|
],
|
|
@@ -190,11 +235,11 @@ exports.contractAgreementDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
190
235
|
from: "ACTIVE",
|
|
191
236
|
to: "COMPLETED",
|
|
192
237
|
eventName: "finalize",
|
|
193
|
-
guard: { ">=": [{
|
|
238
|
+
guard: { ">=": [{ length: [{ var: "state.completions" }] }, 2] },
|
|
194
239
|
effect: {
|
|
195
240
|
merge: [
|
|
196
241
|
{ var: "state" },
|
|
197
|
-
{ status: "COMPLETED", completedAt: { var: "$
|
|
242
|
+
{ status: "COMPLETED", completedAt: { var: "$ordinal" } },
|
|
198
243
|
],
|
|
199
244
|
},
|
|
200
245
|
dependencies: [],
|
|
@@ -203,18 +248,13 @@ exports.contractAgreementDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
203
248
|
from: "ACTIVE",
|
|
204
249
|
to: "DISPUTED",
|
|
205
250
|
eventName: "dispute",
|
|
206
|
-
guard:
|
|
207
|
-
or: [
|
|
208
|
-
{ "===": [{ var: "event.agent" }, { var: "state.proposer" }] },
|
|
209
|
-
{ "===": [{ var: "event.agent" }, { var: "state.counterparty" }] },
|
|
210
|
-
],
|
|
211
|
-
},
|
|
251
|
+
guard: (0, guards_js_1.signerIsAnyParty)(["state.proposer", "state.counterparty"]),
|
|
212
252
|
effect: {
|
|
213
253
|
merge: [
|
|
214
254
|
{ var: "state" },
|
|
215
255
|
{
|
|
216
256
|
status: "DISPUTED",
|
|
217
|
-
disputedAt: { var: "$
|
|
257
|
+
disputedAt: { var: "$ordinal" },
|
|
218
258
|
disputeReason: { var: "event.reason" },
|
|
219
259
|
disputedBy: { var: "event.agent" },
|
|
220
260
|
},
|
|
@@ -226,13 +266,14 @@ exports.contractAgreementDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
226
266
|
from: "DISPUTED",
|
|
227
267
|
to: "COMPLETED",
|
|
228
268
|
eventName: "resolve",
|
|
269
|
+
// authority gate — an ARBITER/SLASHER attestation check layers on additively when the identity registry lands (see docs/design/app-hardening-identity-integration.md §4.2)
|
|
229
270
|
guard: {
|
|
230
271
|
or: [
|
|
231
|
-
|
|
272
|
+
(0, guards_js_1.signerIsParty)("state.arbitrator"),
|
|
232
273
|
{
|
|
233
274
|
and: [
|
|
234
|
-
|
|
235
|
-
|
|
275
|
+
(0, guards_js_1.signerIsParty)("state.proposer"),
|
|
276
|
+
(0, guards_js_1.signerIsParty)("state.counterparty"),
|
|
236
277
|
],
|
|
237
278
|
},
|
|
238
279
|
],
|
|
@@ -242,9 +283,16 @@ exports.contractAgreementDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
242
283
|
{ var: "state" },
|
|
243
284
|
{
|
|
244
285
|
status: "COMPLETED",
|
|
245
|
-
resolvedAt: { var: "$
|
|
286
|
+
resolvedAt: { var: "$ordinal" },
|
|
246
287
|
resolution: { var: "event.resolution" },
|
|
247
|
-
rulingId
|
|
288
|
+
// rulingId is recorded only on the arbitrator-resolved path
|
|
289
|
+
rulingId: {
|
|
290
|
+
if: [
|
|
291
|
+
(0, guards_js_1.signerIsParty)("state.arbitrator"),
|
|
292
|
+
{ var: "event.rulingId" },
|
|
293
|
+
null,
|
|
294
|
+
],
|
|
295
|
+
},
|
|
248
296
|
},
|
|
249
297
|
],
|
|
250
298
|
},
|
|
@@ -254,16 +302,11 @@ exports.contractAgreementDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
254
302
|
from: "ACTIVE",
|
|
255
303
|
to: "CANCELLED",
|
|
256
304
|
eventName: "cancel",
|
|
257
|
-
guard:
|
|
258
|
-
or: [
|
|
259
|
-
{ "===": [{ var: "event.agent" }, { var: "state.proposer" }] },
|
|
260
|
-
{ "===": [{ var: "event.agent" }, { var: "state.counterparty" }] },
|
|
261
|
-
],
|
|
262
|
-
},
|
|
305
|
+
guard: (0, guards_js_1.signerIsAnyParty)(["state.proposer", "state.counterparty"]),
|
|
263
306
|
effect: {
|
|
264
307
|
merge: [
|
|
265
308
|
{ var: "state" },
|
|
266
|
-
{ status: "CANCELLED", cancelledAt: { var: "$
|
|
309
|
+
{ status: "CANCELLED", cancelledAt: { var: "$ordinal" } },
|
|
267
310
|
],
|
|
268
311
|
},
|
|
269
312
|
dependencies: [],
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.contractEscrowDef = void 0;
|
|
4
4
|
const fiber_app_js_1 = require("../../../schema/fiber-app.js");
|
|
5
|
+
const guards_js_1 = require("../../../schema/guards.js");
|
|
5
6
|
/**
|
|
6
7
|
* Asset custody with conditional release, dispute resolution, and split payments.
|
|
7
8
|
*/
|
|
@@ -41,7 +42,7 @@ exports.contractEscrowDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
41
42
|
},
|
|
42
43
|
},
|
|
43
44
|
createSchema: {
|
|
44
|
-
required: ["depositor", "beneficiary", "requiredAmount"],
|
|
45
|
+
required: ["depositor", "beneficiary", "requiredAmount", "arbiter"],
|
|
45
46
|
properties: {
|
|
46
47
|
depositor: {
|
|
47
48
|
type: "address",
|
|
@@ -51,6 +52,11 @@ exports.contractEscrowDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
51
52
|
type: "address",
|
|
52
53
|
description: "DAG address of the beneficiary",
|
|
53
54
|
},
|
|
55
|
+
arbiter: {
|
|
56
|
+
type: "address",
|
|
57
|
+
description: "DAG address of the arbiter authorized to rule on a dispute",
|
|
58
|
+
immutable: true,
|
|
59
|
+
},
|
|
54
60
|
requiredAmount: {
|
|
55
61
|
type: "number",
|
|
56
62
|
minimum: 0,
|
|
@@ -77,6 +83,7 @@ exports.contractEscrowDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
77
83
|
properties: {
|
|
78
84
|
depositor: { type: "address" },
|
|
79
85
|
beneficiary: { type: "address" },
|
|
86
|
+
arbiter: { type: "address", immutable: true },
|
|
80
87
|
requiredAmount: { type: "number" },
|
|
81
88
|
balance: { type: "number" },
|
|
82
89
|
fundedAt: { type: "integer", nullable: true },
|
|
@@ -111,27 +118,86 @@ exports.contractEscrowDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
111
118
|
dispute: {},
|
|
112
119
|
ruling: {
|
|
113
120
|
properties: {
|
|
114
|
-
judicialRuling: { type: "boolean" },
|
|
115
121
|
splits: { type: "array" },
|
|
116
122
|
rulingId: { type: "string" },
|
|
117
123
|
},
|
|
118
124
|
},
|
|
119
|
-
refund: {
|
|
120
|
-
properties: {
|
|
121
|
-
mutualConsent: { type: "boolean", nullable: true },
|
|
122
|
-
},
|
|
123
|
-
},
|
|
125
|
+
refund: {},
|
|
124
126
|
cancel: {},
|
|
125
127
|
},
|
|
126
128
|
states: {
|
|
127
|
-
CREATED: {
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
129
|
+
CREATED: {
|
|
130
|
+
id: "CREATED",
|
|
131
|
+
isFinal: false,
|
|
132
|
+
metadata: {
|
|
133
|
+
label: "Created",
|
|
134
|
+
description: "Escrow created; awaiting funding",
|
|
135
|
+
category: "initial",
|
|
136
|
+
},
|
|
137
|
+
},
|
|
138
|
+
FUNDED: {
|
|
139
|
+
id: "FUNDED",
|
|
140
|
+
isFinal: false,
|
|
141
|
+
metadata: {
|
|
142
|
+
label: "Funded",
|
|
143
|
+
description: "Funds deposited into escrow",
|
|
144
|
+
category: "active",
|
|
145
|
+
},
|
|
146
|
+
},
|
|
147
|
+
ACTIVE: {
|
|
148
|
+
id: "ACTIVE",
|
|
149
|
+
isFinal: false,
|
|
150
|
+
metadata: {
|
|
151
|
+
label: "Active",
|
|
152
|
+
description: "Escrow in effect while work is performed",
|
|
153
|
+
category: "active",
|
|
154
|
+
},
|
|
155
|
+
},
|
|
156
|
+
RELEASING: {
|
|
157
|
+
id: "RELEASING",
|
|
158
|
+
isFinal: false,
|
|
159
|
+
metadata: {
|
|
160
|
+
label: "Releasing",
|
|
161
|
+
description: "Release approved; payout in progress",
|
|
162
|
+
category: "pending",
|
|
163
|
+
},
|
|
164
|
+
},
|
|
165
|
+
DISPUTED: {
|
|
166
|
+
id: "DISPUTED",
|
|
167
|
+
isFinal: false,
|
|
168
|
+
metadata: {
|
|
169
|
+
label: "Disputed",
|
|
170
|
+
description: "A party disputed the escrow; awaiting arbitration",
|
|
171
|
+
category: "pending",
|
|
172
|
+
},
|
|
173
|
+
},
|
|
174
|
+
RELEASED: {
|
|
175
|
+
id: "RELEASED",
|
|
176
|
+
isFinal: true,
|
|
177
|
+
metadata: {
|
|
178
|
+
label: "Released",
|
|
179
|
+
description: "Funds released to the beneficiary (terminal)",
|
|
180
|
+
category: "terminal",
|
|
181
|
+
},
|
|
182
|
+
},
|
|
183
|
+
REFUNDED: {
|
|
184
|
+
id: "REFUNDED",
|
|
185
|
+
isFinal: true,
|
|
186
|
+
metadata: {
|
|
187
|
+
label: "Refunded",
|
|
188
|
+
description: "Funds refunded to the depositor (terminal)",
|
|
189
|
+
category: "terminal",
|
|
190
|
+
},
|
|
191
|
+
},
|
|
192
|
+
SPLIT: {
|
|
193
|
+
id: "SPLIT",
|
|
194
|
+
isFinal: true,
|
|
195
|
+
metadata: {
|
|
196
|
+
label: "Split",
|
|
197
|
+
description: "Funds split between parties per arbitration (terminal)",
|
|
198
|
+
category: "terminal",
|
|
199
|
+
},
|
|
200
|
+
},
|
|
135
201
|
},
|
|
136
202
|
initialState: "CREATED",
|
|
137
203
|
transitions: [
|
|
@@ -141,14 +207,14 @@ exports.contractEscrowDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
141
207
|
eventName: "deposit",
|
|
142
208
|
guard: {
|
|
143
209
|
and: [
|
|
144
|
-
|
|
210
|
+
(0, guards_js_1.signerIsParty)("state.depositor"),
|
|
145
211
|
{ ">=": [{ var: "event.amount" }, { var: "state.requiredAmount" }] },
|
|
146
212
|
],
|
|
147
213
|
},
|
|
148
214
|
effect: {
|
|
149
215
|
merge: [
|
|
150
216
|
{ var: "state" },
|
|
151
|
-
{ balance: { var: "event.amount" }, fundedAt: { var: "$
|
|
217
|
+
{ balance: { var: "event.amount" }, fundedAt: { var: "$ordinal" } },
|
|
152
218
|
],
|
|
153
219
|
},
|
|
154
220
|
dependencies: [],
|
|
@@ -159,12 +225,12 @@ exports.contractEscrowDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
159
225
|
eventName: "activate",
|
|
160
226
|
guard: {
|
|
161
227
|
or: [
|
|
162
|
-
|
|
228
|
+
(0, guards_js_1.signerIsParty)("state.beneficiary"),
|
|
163
229
|
{ var: "state.autoActivate" },
|
|
164
230
|
],
|
|
165
231
|
},
|
|
166
232
|
effect: {
|
|
167
|
-
merge: [{ var: "state" }, { activatedAt: { var: "$
|
|
233
|
+
merge: [{ var: "state" }, { activatedAt: { var: "$ordinal" } }],
|
|
168
234
|
},
|
|
169
235
|
dependencies: [],
|
|
170
236
|
},
|
|
@@ -172,7 +238,7 @@ exports.contractEscrowDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
172
238
|
from: "ACTIVE",
|
|
173
239
|
to: "RELEASING",
|
|
174
240
|
eventName: "request_release",
|
|
175
|
-
guard:
|
|
241
|
+
guard: (0, guards_js_1.signerIsParty)("state.beneficiary"),
|
|
176
242
|
effect: {
|
|
177
243
|
merge: [
|
|
178
244
|
{ var: "state" },
|
|
@@ -181,10 +247,10 @@ exports.contractEscrowDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
181
247
|
requestedBy: { var: "event.agent" },
|
|
182
248
|
amount: { var: "event.amount" },
|
|
183
249
|
reason: { var: "event.reason" },
|
|
184
|
-
requestedAt: { var: "$
|
|
250
|
+
requestedAt: { var: "$ordinal" },
|
|
185
251
|
},
|
|
186
252
|
releaseDeadline: {
|
|
187
|
-
"+": [{ var: "$
|
|
253
|
+
"+": [{ var: "$ordinal" }, { var: "state.releaseWindowMs" }],
|
|
188
254
|
},
|
|
189
255
|
},
|
|
190
256
|
],
|
|
@@ -197,15 +263,15 @@ exports.contractEscrowDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
197
263
|
eventName: "approve_release",
|
|
198
264
|
guard: {
|
|
199
265
|
or: [
|
|
200
|
-
|
|
201
|
-
{ ">=": [{ var: "$
|
|
266
|
+
(0, guards_js_1.signerIsParty)("state.depositor"),
|
|
267
|
+
{ ">=": [{ var: "$ordinal" }, { var: "state.releaseDeadline" }] },
|
|
202
268
|
],
|
|
203
269
|
},
|
|
204
270
|
effect: {
|
|
205
271
|
merge: [
|
|
206
272
|
{ var: "state" },
|
|
207
273
|
{
|
|
208
|
-
releasedAt: { var: "$
|
|
274
|
+
releasedAt: { var: "$ordinal" },
|
|
209
275
|
releasedTo: { var: "state.beneficiary" },
|
|
210
276
|
},
|
|
211
277
|
],
|
|
@@ -218,24 +284,37 @@ exports.contractEscrowDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
218
284
|
eventName: "dispute",
|
|
219
285
|
guard: {
|
|
220
286
|
and: [
|
|
221
|
-
|
|
222
|
-
{ "<": [{ var: "$
|
|
287
|
+
(0, guards_js_1.signerIsParty)("state.depositor"),
|
|
288
|
+
{ "<": [{ var: "$ordinal" }, { var: "state.releaseDeadline" }] },
|
|
223
289
|
],
|
|
224
290
|
},
|
|
225
291
|
effect: {
|
|
226
|
-
merge: [
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
292
|
+
merge: [
|
|
293
|
+
{ var: "state" },
|
|
294
|
+
{ disputedAt: { var: "$ordinal" } },
|
|
295
|
+
{
|
|
296
|
+
// A3 fix: transition-level `spawns` is dropped by the chain. No Judiciary state machine is
|
|
297
|
+
// defined to inline under `_spawn`, and escrow already resolves disputes via its own pinned
|
|
298
|
+
// `arbiter` (the `ruling` transition) — the spawned Judiciary was fire-and-forget (never read
|
|
299
|
+
// by escrow). So the dispute case is surfaced to the judiciary subsystem as an `_emit`
|
|
300
|
+
// notification instead of a child fiber.
|
|
301
|
+
_emit: [
|
|
302
|
+
{
|
|
303
|
+
name: "dispute_opened",
|
|
304
|
+
data: {
|
|
305
|
+
caseType: "escrow_dispute",
|
|
306
|
+
plaintiff: { var: "state.depositor" },
|
|
307
|
+
defendant: { var: "state.beneficiary" },
|
|
308
|
+
claim: {
|
|
309
|
+
escrowId: { var: "machineId" },
|
|
310
|
+
amount: { var: "state.balance" },
|
|
311
|
+
},
|
|
312
|
+
},
|
|
313
|
+
destination: "Judiciary",
|
|
314
|
+
},
|
|
315
|
+
],
|
|
237
316
|
},
|
|
238
|
-
|
|
317
|
+
],
|
|
239
318
|
},
|
|
240
319
|
dependencies: [],
|
|
241
320
|
},
|
|
@@ -243,7 +322,29 @@ exports.contractEscrowDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
243
322
|
from: "DISPUTED",
|
|
244
323
|
to: "SPLIT",
|
|
245
324
|
eventName: "ruling",
|
|
246
|
-
|
|
325
|
+
// authority gate — an ARBITER/SLASHER attestation check layers on additively when the identity registry lands (see docs/design/app-hardening-identity-integration.md §4.2)
|
|
326
|
+
guard: {
|
|
327
|
+
and: [
|
|
328
|
+
(0, guards_js_1.signerIsParty)("state.arbiter"),
|
|
329
|
+
{
|
|
330
|
+
"===": [
|
|
331
|
+
{
|
|
332
|
+
reduce: [
|
|
333
|
+
{ var: "event.splits" },
|
|
334
|
+
{
|
|
335
|
+
"+": [
|
|
336
|
+
{ var: "accumulator" },
|
|
337
|
+
{ var: "current.amount" },
|
|
338
|
+
],
|
|
339
|
+
},
|
|
340
|
+
0,
|
|
341
|
+
],
|
|
342
|
+
},
|
|
343
|
+
{ var: "state.balance" },
|
|
344
|
+
],
|
|
345
|
+
},
|
|
346
|
+
],
|
|
347
|
+
},
|
|
247
348
|
effect: {
|
|
248
349
|
merge: [
|
|
249
350
|
{ var: "state" },
|
|
@@ -259,14 +360,20 @@ exports.contractEscrowDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
259
360
|
from: "ACTIVE",
|
|
260
361
|
to: "REFUNDED",
|
|
261
362
|
eventName: "refund",
|
|
363
|
+
// authority gate — an ARBITER/SLASHER attestation check layers on additively when the identity registry lands (see docs/design/app-hardening-identity-integration.md §4.2)
|
|
262
364
|
guard: {
|
|
263
365
|
or: [
|
|
264
|
-
{
|
|
265
|
-
|
|
366
|
+
{
|
|
367
|
+
and: [
|
|
368
|
+
(0, guards_js_1.signerIsParty)("state.depositor"),
|
|
369
|
+
(0, guards_js_1.signerIsParty)("state.beneficiary"),
|
|
370
|
+
],
|
|
371
|
+
},
|
|
372
|
+
{ ">=": [{ var: "$ordinal" }, { var: "state.expiresAt" }] },
|
|
266
373
|
],
|
|
267
374
|
},
|
|
268
375
|
effect: {
|
|
269
|
-
merge: [{ var: "state" }, { refundedAt: { var: "$
|
|
376
|
+
merge: [{ var: "state" }, { refundedAt: { var: "$ordinal" } }],
|
|
270
377
|
},
|
|
271
378
|
dependencies: [],
|
|
272
379
|
},
|
|
@@ -274,9 +381,9 @@ exports.contractEscrowDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
274
381
|
from: "CREATED",
|
|
275
382
|
to: "REFUNDED",
|
|
276
383
|
eventName: "cancel",
|
|
277
|
-
guard:
|
|
384
|
+
guard: (0, guards_js_1.signerIsParty)("state.depositor"),
|
|
278
385
|
effect: {
|
|
279
|
-
merge: [{ var: "state" }, { refundedAt: { var: "$
|
|
386
|
+
merge: [{ var: "state" }, { refundedAt: { var: "$ordinal" } }],
|
|
280
387
|
},
|
|
281
388
|
dependencies: [],
|
|
282
389
|
},
|