@edge-protocol/sdk 0.4.4 → 0.4.6
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/core/EdgePass.d.ts +1 -1
- package/dist/core/EdgePass.js +24 -20
- package/dist/core/EdgePass.js.map +1 -1
- package/dist/core/ExecutionEngine.js +14 -10
- package/dist/core/ExecutionEngine.js.map +1 -1
- package/dist/core/PolicyEngine.d.ts +19 -1
- package/dist/core/PolicyEngine.d.ts.map +1 -1
- package/dist/core/PolicyEngine.js +69 -9
- package/dist/core/PolicyEngine.js.map +1 -1
- package/dist/index.d.ts +6 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -4
- package/dist/index.js.map +1 -1
- package/dist/test.js +188 -71
- package/dist/test.js.map +1 -1
- package/dist/utils/constants.js +33 -30
- package/dist/utils/constants.js.map +1 -1
- package/dist/utils/types.d.ts +6 -4
- package/dist/utils/types.d.ts.map +1 -1
- package/dist/utils/types.js +2 -1
- package/package.json +2 -1
package/dist/core/EdgePass.d.ts
CHANGED
|
@@ -20,7 +20,7 @@ export declare class EdgePass {
|
|
|
20
20
|
digest: string;
|
|
21
21
|
}>;
|
|
22
22
|
}): Promise<TransactionOutcome>;
|
|
23
|
-
validate(pass: EdgePassObject, request: TransactionRequest): import("
|
|
23
|
+
validate(pass: EdgePassObject, request: TransactionRequest): import("../utils/types").PolicyValidation;
|
|
24
24
|
fetch(objectId: string): Promise<EdgePassObject | null>;
|
|
25
25
|
revoke(pass: EdgePassObject, signer: {
|
|
26
26
|
signAndExecute: (tx: Transaction) => Promise<{
|
package/dist/core/EdgePass.js
CHANGED
|
@@ -1,19 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EdgePass = void 0;
|
|
4
|
+
const client_1 = require("@mysten/sui/client");
|
|
5
|
+
const transactions_1 = require("@mysten/sui/transactions");
|
|
6
|
+
const utils_1 = require("@mysten/sui/utils");
|
|
7
|
+
const PolicyEngine_1 = require("./PolicyEngine");
|
|
8
|
+
const ExecutionEngine_1 = require("./ExecutionEngine");
|
|
9
|
+
const constants_1 = require("../utils/constants");
|
|
7
10
|
// Sui Clock object ID — shared object, always the same address
|
|
8
11
|
const SUI_CLOCK_OBJECT_ID = '0x0000000000000000000000000000000000000000000000000000000000000006';
|
|
9
|
-
|
|
12
|
+
class EdgePass {
|
|
10
13
|
constructor(config) {
|
|
11
14
|
this.config = config;
|
|
12
|
-
this.client = new SuiClient({ url: NETWORK_URLS[config.network] });
|
|
13
|
-
this.engine = new ExecutionEngine(config.network);
|
|
15
|
+
this.client = new client_1.SuiClient({ url: constants_1.NETWORK_URLS[config.network] });
|
|
16
|
+
this.engine = new ExecutionEngine_1.ExecutionEngine(config.network);
|
|
14
17
|
}
|
|
15
18
|
static fromTemplate(template, overrides) {
|
|
16
|
-
const base = EDGE_TEMPLATES[template];
|
|
19
|
+
const base = constants_1.EDGE_TEMPLATES[template];
|
|
17
20
|
return {
|
|
18
21
|
...base,
|
|
19
22
|
...overrides,
|
|
@@ -21,9 +24,9 @@ export class EdgePass {
|
|
|
21
24
|
};
|
|
22
25
|
}
|
|
23
26
|
async create(passConfig, signer) {
|
|
24
|
-
const tx = new Transaction();
|
|
25
|
-
tx.setGasBudget(DEFAULT_GAS_BUDGET);
|
|
26
|
-
const packageId = EDGE_PACKAGE_ID[this.config.network];
|
|
27
|
+
const tx = new transactions_1.Transaction();
|
|
28
|
+
tx.setGasBudget(constants_1.DEFAULT_GAS_BUDGET);
|
|
29
|
+
const packageId = constants_1.EDGE_PACKAGE_ID[this.config.network];
|
|
27
30
|
tx.moveCall({
|
|
28
31
|
target: `${packageId}::edge_pass::create_pass`,
|
|
29
32
|
arguments: [
|
|
@@ -40,7 +43,7 @@ export class EdgePass {
|
|
|
40
43
|
],
|
|
41
44
|
});
|
|
42
45
|
// All arguments statically known — no RPC needed, instant build
|
|
43
|
-
const kindBytes = toBase64(await tx.build({ onlyTransactionKind: true }));
|
|
46
|
+
const kindBytes = (0, utils_1.toBase64)(await tx.build({ onlyTransactionKind: true }));
|
|
44
47
|
const result = await signer.signAndExecute(tx, kindBytes);
|
|
45
48
|
const now = Date.now();
|
|
46
49
|
return {
|
|
@@ -56,15 +59,15 @@ export class EdgePass {
|
|
|
56
59
|
return this.engine.execute(pass, request, signer);
|
|
57
60
|
}
|
|
58
61
|
validate(pass, request) {
|
|
59
|
-
return PolicyEngine.validate(pass, request);
|
|
62
|
+
return PolicyEngine_1.PolicyEngine.validate(pass, request);
|
|
60
63
|
}
|
|
61
64
|
async fetch(objectId) {
|
|
62
65
|
return this.engine.fetchPass(objectId);
|
|
63
66
|
}
|
|
64
67
|
async revoke(pass, signer) {
|
|
65
|
-
const tx = new Transaction();
|
|
66
|
-
tx.setGasBudget(DEFAULT_GAS_BUDGET);
|
|
67
|
-
const packageId = EDGE_PACKAGE_ID[this.config.network];
|
|
68
|
+
const tx = new transactions_1.Transaction();
|
|
69
|
+
tx.setGasBudget(constants_1.DEFAULT_GAS_BUDGET);
|
|
70
|
+
const packageId = constants_1.EDGE_PACKAGE_ID[this.config.network];
|
|
68
71
|
tx.moveCall({
|
|
69
72
|
target: `${packageId}::edge_pass::revoke_pass`,
|
|
70
73
|
arguments: [tx.object(pass.id)],
|
|
@@ -72,10 +75,11 @@ export class EdgePass {
|
|
|
72
75
|
return signer.signAndExecute(tx);
|
|
73
76
|
}
|
|
74
77
|
remainingBudget(pass) {
|
|
75
|
-
return PolicyEngine.remainingBudget(pass);
|
|
78
|
+
return PolicyEngine_1.PolicyEngine.remainingBudget(pass);
|
|
76
79
|
}
|
|
77
80
|
isValid(pass) {
|
|
78
|
-
return PolicyEngine.isValid(pass);
|
|
81
|
+
return PolicyEngine_1.PolicyEngine.isValid(pass);
|
|
79
82
|
}
|
|
80
83
|
}
|
|
84
|
+
exports.EdgePass = EdgePass;
|
|
81
85
|
//# sourceMappingURL=EdgePass.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EdgePass.js","sourceRoot":"","sources":["../../src/core/EdgePass.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"EdgePass.js","sourceRoot":"","sources":["../../src/core/EdgePass.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ExecutionEngine = void 0;
|
|
4
|
+
const client_1 = require("@mysten/sui/client");
|
|
5
|
+
const transactions_1 = require("@mysten/sui/transactions");
|
|
6
|
+
const PolicyEngine_1 = require("./PolicyEngine");
|
|
7
|
+
const constants_1 = require("../utils/constants");
|
|
8
|
+
class ExecutionEngine {
|
|
6
9
|
constructor(network) {
|
|
7
10
|
this.network = network;
|
|
8
|
-
this.client = new SuiClient({ url: NETWORK_URLS[network] });
|
|
11
|
+
this.client = new client_1.SuiClient({ url: constants_1.NETWORK_URLS[network] });
|
|
9
12
|
}
|
|
10
13
|
async execute(pass, request, signer) {
|
|
11
|
-
const validation = PolicyEngine.validate(pass, request);
|
|
14
|
+
const validation = PolicyEngine_1.PolicyEngine.validate(pass, request);
|
|
12
15
|
if (!validation.allowed) {
|
|
13
16
|
return { status: "blocked", reason: validation.reason, auto: false };
|
|
14
17
|
}
|
|
@@ -29,9 +32,9 @@ export class ExecutionEngine {
|
|
|
29
32
|
}
|
|
30
33
|
}
|
|
31
34
|
buildPTB(pass, request) {
|
|
32
|
-
const tx = new Transaction();
|
|
33
|
-
tx.setGasBudget(DEFAULT_GAS_BUDGET);
|
|
34
|
-
const packageId = EDGE_PACKAGE_ID[this.network];
|
|
35
|
+
const tx = new transactions_1.Transaction();
|
|
36
|
+
tx.setGasBudget(constants_1.DEFAULT_GAS_BUDGET);
|
|
37
|
+
const packageId = constants_1.EDGE_PACKAGE_ID[this.network];
|
|
35
38
|
tx.moveCall({
|
|
36
39
|
target: `${packageId}::edge_pass::execute_transaction`,
|
|
37
40
|
arguments: [
|
|
@@ -74,4 +77,5 @@ export class ExecutionEngine {
|
|
|
74
77
|
}
|
|
75
78
|
}
|
|
76
79
|
}
|
|
80
|
+
exports.ExecutionEngine = ExecutionEngine;
|
|
77
81
|
//# sourceMappingURL=ExecutionEngine.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExecutionEngine.js","sourceRoot":"","sources":["../../src/core/ExecutionEngine.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ExecutionEngine.js","sourceRoot":"","sources":["../../src/core/ExecutionEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,25 @@
|
|
|
1
|
-
import { EdgePassObject, TransactionRequest, PolicyValidation } from
|
|
1
|
+
import { EdgePassObject, TransactionRequest, PolicyValidation } from '../utils/types';
|
|
2
2
|
export declare class PolicyEngine {
|
|
3
|
+
/**
|
|
4
|
+
* Validates a transaction request against an EdgePass policy.
|
|
5
|
+
*
|
|
6
|
+
* Rules (in order):
|
|
7
|
+
* 1. Pass must be active
|
|
8
|
+
* 2. Pass must not be expired
|
|
9
|
+
* 3. Merchant must be in approved list
|
|
10
|
+
* 4. Amount must not exceed remaining budget
|
|
11
|
+
* 5. Amount must not exceed maxPerTransaction (if set)
|
|
12
|
+
* 6. If amount > escalateThreshold → escalate
|
|
13
|
+
* 7. If amount ≤ autoThreshold → auto-approve
|
|
14
|
+
*/
|
|
3
15
|
static validate(pass: EdgePassObject, request: TransactionRequest): PolicyValidation;
|
|
16
|
+
/**
|
|
17
|
+
* Returns true if the pass is active and not expired.
|
|
18
|
+
*/
|
|
4
19
|
static isValid(pass: EdgePassObject): boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Returns the remaining budget in MIST.
|
|
22
|
+
*/
|
|
5
23
|
static remainingBudget(pass: EdgePassObject): bigint;
|
|
6
24
|
}
|
|
7
25
|
//# sourceMappingURL=PolicyEngine.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PolicyEngine.d.ts","sourceRoot":"","sources":["../../src/core/PolicyEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEtF,qBAAa,YAAY;IAEvB,MAAM,CAAC,QAAQ,CACb,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,kBAAkB,GAC1B,gBAAgB;
|
|
1
|
+
{"version":3,"file":"PolicyEngine.d.ts","sourceRoot":"","sources":["../../src/core/PolicyEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEtF,qBAAa,YAAY;IAEvB;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,QAAQ,CACb,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,kBAAkB,GAC1B,gBAAgB;IAoEnB;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO;IAI7C;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM;CAGrD"}
|
|
@@ -1,29 +1,89 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PolicyEngine = void 0;
|
|
4
|
+
class PolicyEngine {
|
|
5
|
+
/**
|
|
6
|
+
* Validates a transaction request against an EdgePass policy.
|
|
7
|
+
*
|
|
8
|
+
* Rules (in order):
|
|
9
|
+
* 1. Pass must be active
|
|
10
|
+
* 2. Pass must not be expired
|
|
11
|
+
* 3. Merchant must be in approved list
|
|
12
|
+
* 4. Amount must not exceed remaining budget
|
|
13
|
+
* 5. Amount must not exceed maxPerTransaction (if set)
|
|
14
|
+
* 6. If amount > escalateThreshold → escalate
|
|
15
|
+
* 7. If amount ≤ autoThreshold → auto-approve
|
|
16
|
+
*/
|
|
2
17
|
static validate(pass, request) {
|
|
18
|
+
// Rule 1 — pass must be active
|
|
3
19
|
if (!pass.active) {
|
|
4
|
-
return {
|
|
20
|
+
return {
|
|
21
|
+
allowed: false,
|
|
22
|
+
requiresEscalation: false,
|
|
23
|
+
reason: 'EdgePass is inactive',
|
|
24
|
+
};
|
|
5
25
|
}
|
|
26
|
+
// Rule 2 — pass must not be expired
|
|
6
27
|
if (Date.now() > pass.expiresAt) {
|
|
7
|
-
return {
|
|
28
|
+
return {
|
|
29
|
+
allowed: false,
|
|
30
|
+
requiresEscalation: false,
|
|
31
|
+
reason: 'EdgePass has expired',
|
|
32
|
+
};
|
|
8
33
|
}
|
|
9
|
-
|
|
10
|
-
if (!
|
|
11
|
-
return {
|
|
34
|
+
// Rule 3 — merchant must be approved
|
|
35
|
+
if (!pass.config.approvedMerchants.includes(request.merchant)) {
|
|
36
|
+
return {
|
|
37
|
+
allowed: false,
|
|
38
|
+
requiresEscalation: false,
|
|
39
|
+
reason: `Merchant "${request.merchant}" is not approved`,
|
|
40
|
+
};
|
|
12
41
|
}
|
|
42
|
+
// Rule 4 — must not exceed remaining budget
|
|
13
43
|
const remaining = pass.config.budget - pass.spent;
|
|
14
44
|
if (request.amount > remaining) {
|
|
15
|
-
return {
|
|
45
|
+
return {
|
|
46
|
+
allowed: false,
|
|
47
|
+
requiresEscalation: false,
|
|
48
|
+
reason: `Insufficient budget. Remaining: ${remaining} MIST`,
|
|
49
|
+
};
|
|
16
50
|
}
|
|
51
|
+
// Rule 5 — must not exceed per-transaction limit (if set)
|
|
52
|
+
if (pass.config.maxPerTransaction !== undefined &&
|
|
53
|
+
request.amount > pass.config.maxPerTransaction) {
|
|
54
|
+
return {
|
|
55
|
+
allowed: false,
|
|
56
|
+
requiresEscalation: false,
|
|
57
|
+
reason: `Amount exceeds per-transaction limit of ${pass.config.maxPerTransaction} MIST`,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
// Rule 6 — escalate if above escalation threshold
|
|
17
61
|
if (request.amount > pass.config.escalateThreshold) {
|
|
18
|
-
return {
|
|
62
|
+
return {
|
|
63
|
+
allowed: true,
|
|
64
|
+
requiresEscalation: true,
|
|
65
|
+
reason: `Amount exceeds escalation threshold of ${pass.config.escalateThreshold} MIST`,
|
|
66
|
+
};
|
|
19
67
|
}
|
|
20
|
-
|
|
68
|
+
// Rule 7 — auto-approve
|
|
69
|
+
return {
|
|
70
|
+
allowed: true,
|
|
71
|
+
requiresEscalation: false,
|
|
72
|
+
reason: 'Auto-approved',
|
|
73
|
+
};
|
|
21
74
|
}
|
|
75
|
+
/**
|
|
76
|
+
* Returns true if the pass is active and not expired.
|
|
77
|
+
*/
|
|
22
78
|
static isValid(pass) {
|
|
23
79
|
return pass.active && Date.now() <= pass.expiresAt;
|
|
24
80
|
}
|
|
81
|
+
/**
|
|
82
|
+
* Returns the remaining budget in MIST.
|
|
83
|
+
*/
|
|
25
84
|
static remainingBudget(pass) {
|
|
26
85
|
return pass.config.budget - pass.spent;
|
|
27
86
|
}
|
|
28
87
|
}
|
|
88
|
+
exports.PolicyEngine = PolicyEngine;
|
|
29
89
|
//# sourceMappingURL=PolicyEngine.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PolicyEngine.js","sourceRoot":"","sources":["../../src/core/PolicyEngine.ts"],"names":[],"mappings":"AAEA,
|
|
1
|
+
{"version":3,"file":"PolicyEngine.js","sourceRoot":"","sources":["../../src/core/PolicyEngine.ts"],"names":[],"mappings":";;;AAEA,MAAa,YAAY;IAEvB;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,QAAQ,CACb,IAAoB,EACpB,OAA2B;QAG3B,+BAA+B;QAC/B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,kBAAkB,EAAE,KAAK;gBACzB,MAAM,EAAE,sBAAsB;aAC/B,CAAC;QACJ,CAAC;QAED,oCAAoC;QACpC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YAChC,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,kBAAkB,EAAE,KAAK;gBACzB,MAAM,EAAE,sBAAsB;aAC/B,CAAC;QACJ,CAAC;QAED,qCAAqC;QACrC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9D,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,kBAAkB,EAAE,KAAK;gBACzB,MAAM,EAAE,aAAa,OAAO,CAAC,QAAQ,mBAAmB;aACzD,CAAC;QACJ,CAAC;QAED,4CAA4C;QAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;QAClD,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;YAC/B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,kBAAkB,EAAE,KAAK;gBACzB,MAAM,EAAE,mCAAmC,SAAS,OAAO;aAC5D,CAAC;QACJ,CAAC;QAED,0DAA0D;QAC1D,IACE,IAAI,CAAC,MAAM,CAAC,iBAAiB,KAAK,SAAS;YAC3C,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAC9C,CAAC;YACD,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,kBAAkB,EAAE,KAAK;gBACzB,MAAM,EAAE,2CAA2C,IAAI,CAAC,MAAM,CAAC,iBAAiB,OAAO;aACxF,CAAC;QACJ,CAAC;QAED,kDAAkD;QAClD,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;YACnD,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,kBAAkB,EAAE,IAAI;gBACxB,MAAM,EAAE,0CAA0C,IAAI,CAAC,MAAM,CAAC,iBAAiB,OAAO;aACvF,CAAC;QACJ,CAAC;QAED,wBAAwB;QACxB,OAAO;YACL,OAAO,EAAE,IAAI;YACb,kBAAkB,EAAE,KAAK;YACzB,MAAM,EAAE,eAAe;SACxB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,IAAoB;QACjC,OAAO,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC;IACrD,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,IAAoB;QACzC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;IACzC,CAAC;CACF;AAlGD,oCAkGC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
export { EdgePass } from
|
|
2
|
-
export { PolicyEngine } from
|
|
3
|
-
export { ExecutionEngine } from
|
|
4
|
-
export type { EdgePassConfig, EdgePassObject, TransactionRequest, TransactionOutcome, PolicyValidation, Network, EdgeSDKConfig, } from
|
|
5
|
-
export { MIST_PER_SUI, NETWORK_URLS, EDGE_PACKAGE_ID } from
|
|
1
|
+
export { EdgePass } from './core/EdgePass';
|
|
2
|
+
export { PolicyEngine } from './core/PolicyEngine';
|
|
3
|
+
export { ExecutionEngine } from './core/ExecutionEngine';
|
|
4
|
+
export type { EdgePassConfig, EdgePassObject, TransactionRequest, TransactionOutcome, PolicyValidation, Network, EdgeSDKConfig, } from './utils/types';
|
|
5
|
+
export { MIST_PER_SUI, NETWORK_URLS, EDGE_PACKAGE_ID, EDGE_TEMPLATES, DEFAULT_GAS_BUDGET, } from './utils/constants';
|
|
6
|
+
export type { EdgePassTemplate } from './utils/constants';
|
|
6
7
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,YAAY,EACV,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,OAAO,EACP,aAAa,GACd,MAAM,eAAe,CAAC;AACvB,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,YAAY,EACV,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,OAAO,EACP,aAAa,GACd,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,cAAc,EACd,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DEFAULT_GAS_BUDGET = exports.EDGE_TEMPLATES = exports.EDGE_PACKAGE_ID = exports.NETWORK_URLS = exports.MIST_PER_SUI = exports.ExecutionEngine = exports.PolicyEngine = exports.EdgePass = void 0;
|
|
4
|
+
var EdgePass_1 = require("./core/EdgePass");
|
|
5
|
+
Object.defineProperty(exports, "EdgePass", { enumerable: true, get: function () { return EdgePass_1.EdgePass; } });
|
|
6
|
+
var PolicyEngine_1 = require("./core/PolicyEngine");
|
|
7
|
+
Object.defineProperty(exports, "PolicyEngine", { enumerable: true, get: function () { return PolicyEngine_1.PolicyEngine; } });
|
|
8
|
+
var ExecutionEngine_1 = require("./core/ExecutionEngine");
|
|
9
|
+
Object.defineProperty(exports, "ExecutionEngine", { enumerable: true, get: function () { return ExecutionEngine_1.ExecutionEngine; } });
|
|
10
|
+
var constants_1 = require("./utils/constants");
|
|
11
|
+
Object.defineProperty(exports, "MIST_PER_SUI", { enumerable: true, get: function () { return constants_1.MIST_PER_SUI; } });
|
|
12
|
+
Object.defineProperty(exports, "NETWORK_URLS", { enumerable: true, get: function () { return constants_1.NETWORK_URLS; } });
|
|
13
|
+
Object.defineProperty(exports, "EDGE_PACKAGE_ID", { enumerable: true, get: function () { return constants_1.EDGE_PACKAGE_ID; } });
|
|
14
|
+
Object.defineProperty(exports, "EDGE_TEMPLATES", { enumerable: true, get: function () { return constants_1.EDGE_TEMPLATES; } });
|
|
15
|
+
Object.defineProperty(exports, "DEFAULT_GAS_BUDGET", { enumerable: true, get: function () { return constants_1.DEFAULT_GAS_BUDGET; } });
|
|
5
16
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,4CAA2C;AAAlC,oGAAA,QAAQ,OAAA;AACjB,oDAAmD;AAA1C,4GAAA,YAAY,OAAA;AACrB,0DAAyD;AAAhD,kHAAA,eAAe,OAAA;AAUxB,+CAM2B;AALzB,yGAAA,YAAY,OAAA;AACZ,yGAAA,YAAY,OAAA;AACZ,4GAAA,eAAe,OAAA;AACf,2GAAA,cAAc,OAAA;AACd,+GAAA,kBAAkB,OAAA"}
|
package/dist/test.js
CHANGED
|
@@ -1,86 +1,203 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
escalateThreshold: BigInt(100) * MIST_PER_SUI,
|
|
10
|
-
approvedMerchants: ["Shuttle Express", "Hydra Bar", "Stage Access VIP"],
|
|
11
|
-
expiryMs: 48 * 60 * 60 * 1000,
|
|
12
|
-
owner: "0xabc",
|
|
13
|
-
},
|
|
14
|
-
spent: BigInt(0),
|
|
15
|
-
active: true,
|
|
16
|
-
createdAt: Date.now(),
|
|
17
|
-
expiresAt: Date.now() + 48 * 60 * 60 * 1000,
|
|
18
|
-
};
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const PolicyEngine_1 = require("./core/PolicyEngine");
|
|
4
|
+
const EdgePass_1 = require("./core/EdgePass");
|
|
5
|
+
const constants_1 = require("./utils/constants");
|
|
6
|
+
// ── Test runner ───────────────────────────────────────────────────────────────
|
|
7
|
+
let passed = 0;
|
|
8
|
+
let failed = 0;
|
|
19
9
|
function test(name, fn) {
|
|
20
10
|
try {
|
|
21
11
|
fn();
|
|
22
|
-
console.log(
|
|
12
|
+
console.log(` ✓ ${name}`);
|
|
13
|
+
passed++;
|
|
23
14
|
}
|
|
24
15
|
catch (e) {
|
|
25
|
-
console.error(
|
|
16
|
+
console.error(` ✗ ${name}: ${e}`);
|
|
17
|
+
failed++;
|
|
26
18
|
}
|
|
27
19
|
}
|
|
28
20
|
function assert(condition, message) {
|
|
29
21
|
if (!condition)
|
|
30
22
|
throw new Error(message);
|
|
31
23
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
24
|
+
function assertEqual(actual, expected, message) {
|
|
25
|
+
if (actual !== expected)
|
|
26
|
+
throw new Error(`${message} — expected ${expected}, got ${actual}`);
|
|
27
|
+
}
|
|
28
|
+
// ── Fixtures ──────────────────────────────────────────────────────────────────
|
|
29
|
+
const mockPass = {
|
|
30
|
+
id: '0x123',
|
|
31
|
+
config: {
|
|
32
|
+
budget: BigInt(300) * constants_1.MIST_PER_SUI,
|
|
33
|
+
autoThreshold: BigInt(50) * constants_1.MIST_PER_SUI,
|
|
34
|
+
escalateThreshold: BigInt(100) * constants_1.MIST_PER_SUI,
|
|
35
|
+
maxPerTransaction: BigInt(200) * constants_1.MIST_PER_SUI,
|
|
36
|
+
approvedMerchants: ['Shuttle Express', 'Hydra Bar', 'Stage Access VIP'],
|
|
37
|
+
expiryMs: 48 * 60 * 60 * 1000,
|
|
38
|
+
owner: '0xabc',
|
|
39
|
+
},
|
|
40
|
+
spent: BigInt(0),
|
|
41
|
+
active: true,
|
|
42
|
+
createdAt: Date.now(),
|
|
43
|
+
expiresAt: Date.now() + 48 * 60 * 60 * 1000,
|
|
44
|
+
};
|
|
45
|
+
// ── PolicyEngine tests ────────────────────────────────────────────────────────
|
|
46
|
+
console.log('\n📋 PolicyEngine.validate()');
|
|
47
|
+
test('auto-approves under $50', () => {
|
|
48
|
+
const r = PolicyEngine_1.PolicyEngine.validate(mockPass, { merchant: 'Shuttle Express', amount: BigInt(18) * constants_1.MIST_PER_SUI });
|
|
49
|
+
assert(r.allowed, 'should be allowed');
|
|
50
|
+
assert(!r.requiresEscalation, 'should not escalate');
|
|
51
|
+
assertEqual(r.reason, 'Auto-approved', 'reason');
|
|
52
|
+
});
|
|
53
|
+
test('auto-approves at exactly $50', () => {
|
|
54
|
+
const r = PolicyEngine_1.PolicyEngine.validate(mockPass, { merchant: 'Shuttle Express', amount: BigInt(50) * constants_1.MIST_PER_SUI });
|
|
55
|
+
assert(r.allowed, 'should be allowed');
|
|
56
|
+
assert(!r.requiresEscalation, 'should not escalate');
|
|
57
|
+
});
|
|
58
|
+
test('escalates above $100', () => {
|
|
59
|
+
const r = PolicyEngine_1.PolicyEngine.validate(mockPass, { merchant: 'Shuttle Express', amount: BigInt(149) * constants_1.MIST_PER_SUI });
|
|
60
|
+
assert(r.allowed, 'should be allowed');
|
|
61
|
+
assert(r.requiresEscalation, 'should escalate');
|
|
62
|
+
});
|
|
63
|
+
test('escalates at exactly $101', () => {
|
|
64
|
+
const r = PolicyEngine_1.PolicyEngine.validate(mockPass, { merchant: 'Shuttle Express', amount: BigInt(101) * constants_1.MIST_PER_SUI });
|
|
65
|
+
assert(r.requiresEscalation, 'should escalate at boundary');
|
|
66
|
+
});
|
|
67
|
+
test('blocks unlisted merchant', () => {
|
|
68
|
+
const r = PolicyEngine_1.PolicyEngine.validate(mockPass, { merchant: 'ShadyTokens.xyz', amount: BigInt(1) * constants_1.MIST_PER_SUI });
|
|
69
|
+
assert(!r.allowed, 'should be blocked');
|
|
70
|
+
assert(r.reason.includes('not approved'), 'reason should mention approval');
|
|
71
|
+
});
|
|
72
|
+
test('blocks when budget exceeded', () => {
|
|
73
|
+
const pass = { ...mockPass, spent: BigInt(299) * constants_1.MIST_PER_SUI };
|
|
74
|
+
const r = PolicyEngine_1.PolicyEngine.validate(pass, { merchant: 'Shuttle Express', amount: BigInt(50) * constants_1.MIST_PER_SUI });
|
|
75
|
+
assert(!r.allowed, 'should be blocked');
|
|
76
|
+
assert(r.reason.includes('budget'), 'reason should mention budget');
|
|
77
|
+
});
|
|
78
|
+
test('blocks when expired', () => {
|
|
79
|
+
const pass = { ...mockPass, expiresAt: Date.now() - 1000 };
|
|
80
|
+
const r = PolicyEngine_1.PolicyEngine.validate(pass, { merchant: 'Shuttle Express', amount: BigInt(18) * constants_1.MIST_PER_SUI });
|
|
81
|
+
assert(!r.allowed, 'should be blocked');
|
|
82
|
+
assert(r.reason.includes('expired'), 'reason should mention expiry');
|
|
83
|
+
});
|
|
84
|
+
test('blocks when inactive', () => {
|
|
85
|
+
const pass = { ...mockPass, active: false };
|
|
86
|
+
const r = PolicyEngine_1.PolicyEngine.validate(pass, { merchant: 'Shuttle Express', amount: BigInt(18) * constants_1.MIST_PER_SUI });
|
|
87
|
+
assert(!r.allowed, 'should be blocked');
|
|
88
|
+
assert(r.reason.includes('inactive'), 'reason should mention inactive');
|
|
89
|
+
});
|
|
90
|
+
test('blocks when maxPerTransaction exceeded', () => {
|
|
91
|
+
const r = PolicyEngine_1.PolicyEngine.validate(mockPass, { merchant: 'Shuttle Express', amount: BigInt(250) * constants_1.MIST_PER_SUI });
|
|
92
|
+
assert(!r.allowed, 'should be blocked');
|
|
93
|
+
assert(r.reason.includes('per-transaction'), 'reason should mention per-transaction limit');
|
|
94
|
+
});
|
|
95
|
+
test('allows when maxPerTransaction is undefined', () => {
|
|
96
|
+
const pass = { ...mockPass, config: { ...mockPass.config, maxPerTransaction: undefined } };
|
|
97
|
+
const r = PolicyEngine_1.PolicyEngine.validate(pass, { merchant: 'Shuttle Express', amount: BigInt(150) * constants_1.MIST_PER_SUI });
|
|
98
|
+
assert(r.allowed, 'should be allowed without maxPerTransaction');
|
|
99
|
+
assert(r.requiresEscalation, 'should escalate above threshold');
|
|
100
|
+
});
|
|
101
|
+
// ── PolicyEngine helpers ───────────────────────────────────────────────────────
|
|
102
|
+
console.log('\n📋 PolicyEngine helpers');
|
|
103
|
+
test('isValid returns true for active pass', () => {
|
|
104
|
+
assert(PolicyEngine_1.PolicyEngine.isValid(mockPass), 'should be valid');
|
|
105
|
+
});
|
|
106
|
+
test('isValid returns false for expired pass', () => {
|
|
107
|
+
const pass = { ...mockPass, expiresAt: Date.now() - 1000 };
|
|
108
|
+
assert(!PolicyEngine_1.PolicyEngine.isValid(pass), 'should be invalid');
|
|
109
|
+
});
|
|
110
|
+
test('isValid returns false for inactive pass', () => {
|
|
111
|
+
const pass = { ...mockPass, active: false };
|
|
112
|
+
assert(!PolicyEngine_1.PolicyEngine.isValid(pass), 'should be invalid');
|
|
113
|
+
});
|
|
114
|
+
test('remainingBudget calculates correctly', () => {
|
|
115
|
+
const pass = { ...mockPass, spent: BigInt(100) * constants_1.MIST_PER_SUI };
|
|
116
|
+
const remaining = PolicyEngine_1.PolicyEngine.remainingBudget(pass);
|
|
117
|
+
assertEqual(remaining, BigInt(200) * constants_1.MIST_PER_SUI, 'remaining budget');
|
|
118
|
+
});
|
|
119
|
+
test('remainingBudget returns full budget when nothing spent', () => {
|
|
120
|
+
const remaining = PolicyEngine_1.PolicyEngine.remainingBudget(mockPass);
|
|
121
|
+
assertEqual(remaining, BigInt(300) * constants_1.MIST_PER_SUI, 'full budget');
|
|
122
|
+
});
|
|
123
|
+
// ── EdgePass.fromTemplate ──────────────────────────────────────────────────────
|
|
124
|
+
console.log('\n📋 EdgePass.fromTemplate()');
|
|
125
|
+
test('festival template has correct defaults', () => {
|
|
126
|
+
const config = EdgePass_1.EdgePass.fromTemplate('festival', { owner: '0xabc' });
|
|
127
|
+
assertEqual(config.budget, constants_1.EDGE_TEMPLATES.festival.budget, 'budget');
|
|
128
|
+
assertEqual(config.autoThreshold, constants_1.EDGE_TEMPLATES.festival.autoThreshold, 'autoThreshold');
|
|
129
|
+
assertEqual(config.escalateThreshold, constants_1.EDGE_TEMPLATES.festival.escalateThreshold, 'escalateThreshold');
|
|
130
|
+
assertEqual(config.owner, '0xabc', 'owner');
|
|
131
|
+
});
|
|
132
|
+
test('gaming template has correct expiry', () => {
|
|
133
|
+
const config = EdgePass_1.EdgePass.fromTemplate('gaming', { owner: '0xabc' });
|
|
134
|
+
assertEqual(config.expiryMs, 4 * 60 * 60 * 1000, 'gaming expiry should be 4h');
|
|
135
|
+
});
|
|
136
|
+
test('defi template has correct budget', () => {
|
|
137
|
+
const config = EdgePass_1.EdgePass.fromTemplate('defi', { owner: '0xabc' });
|
|
138
|
+
assertEqual(config.budget, BigInt(10000) * constants_1.MIST_PER_SUI, 'defi budget should be 10k SUI');
|
|
139
|
+
});
|
|
140
|
+
test('enterprise template has correct budget', () => {
|
|
141
|
+
const config = EdgePass_1.EdgePass.fromTemplate('enterprise', { owner: '0xabc' });
|
|
142
|
+
assertEqual(config.budget, BigInt(50000) * constants_1.MIST_PER_SUI, 'enterprise budget should be 50k SUI');
|
|
143
|
+
});
|
|
144
|
+
test('fromTemplate allows budget override', () => {
|
|
145
|
+
const config = EdgePass_1.EdgePass.fromTemplate('festival', {
|
|
146
|
+
budget: BigInt(500) * constants_1.MIST_PER_SUI,
|
|
147
|
+
owner: '0xabc',
|
|
73
148
|
});
|
|
74
|
-
|
|
75
|
-
});
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
const
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
amount: BigInt(18) * MIST_PER_SUI,
|
|
149
|
+
assertEqual(config.budget, BigInt(500) * constants_1.MIST_PER_SUI, 'overridden budget');
|
|
150
|
+
});
|
|
151
|
+
test('fromTemplate allows merchant override', () => {
|
|
152
|
+
const merchants = ['My Vendor 1', 'My Vendor 2'];
|
|
153
|
+
const config = EdgePass_1.EdgePass.fromTemplate('festival', {
|
|
154
|
+
approvedMerchants: merchants,
|
|
155
|
+
owner: '0xabc',
|
|
82
156
|
});
|
|
83
|
-
|
|
157
|
+
assertEqual(config.approvedMerchants.length, 2, 'merchant count');
|
|
158
|
+
assertEqual(config.approvedMerchants[0], 'My Vendor 1', 'first merchant');
|
|
159
|
+
});
|
|
160
|
+
test('fromTemplate preserves owner', () => {
|
|
161
|
+
const config = EdgePass_1.EdgePass.fromTemplate('defi', { owner: '0xdeadbeef' });
|
|
162
|
+
assertEqual(config.owner, '0xdeadbeef', 'owner preserved');
|
|
163
|
+
});
|
|
164
|
+
// ── Constants ─────────────────────────────────────────────────────────────────
|
|
165
|
+
console.log('\n📋 Constants');
|
|
166
|
+
test('MIST_PER_SUI is 1_000_000_000', () => {
|
|
167
|
+
assertEqual(constants_1.MIST_PER_SUI, BigInt(1000000000), 'MIST_PER_SUI');
|
|
168
|
+
});
|
|
169
|
+
test('all 5 templates exist', () => {
|
|
170
|
+
const templates = ['festival', 'gaming', 'subscription', 'defi', 'enterprise'];
|
|
171
|
+
for (const t of templates) {
|
|
172
|
+
assert(t in constants_1.EDGE_TEMPLATES, `template ${t} should exist`);
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
test('all templates have required fields', () => {
|
|
176
|
+
for (const [name, template] of Object.entries(constants_1.EDGE_TEMPLATES)) {
|
|
177
|
+
assert('budget' in template, `${name} should have budget`);
|
|
178
|
+
assert('autoThreshold' in template, `${name} should have autoThreshold`);
|
|
179
|
+
assert('escalateThreshold' in template, `${name} should have escalateThreshold`);
|
|
180
|
+
assert('expiryMs' in template, `${name} should have expiryMs`);
|
|
181
|
+
}
|
|
84
182
|
});
|
|
85
|
-
|
|
183
|
+
test('all templates have autoThreshold < escalateThreshold', () => {
|
|
184
|
+
for (const [name, template] of Object.entries(constants_1.EDGE_TEMPLATES)) {
|
|
185
|
+
assert(template.autoThreshold < template.escalateThreshold, `${name}: autoThreshold must be less than escalateThreshold`);
|
|
186
|
+
}
|
|
187
|
+
});
|
|
188
|
+
test('all templates have escalateThreshold < budget', () => {
|
|
189
|
+
for (const [name, template] of Object.entries(constants_1.EDGE_TEMPLATES)) {
|
|
190
|
+
assert(template.escalateThreshold < template.budget, `${name}: escalateThreshold must be less than budget`);
|
|
191
|
+
}
|
|
192
|
+
});
|
|
193
|
+
// ── Summary ───────────────────────────────────────────────────────────────────
|
|
194
|
+
console.log(`\n${'─'.repeat(40)}`);
|
|
195
|
+
console.log(` ${passed} passed · ${failed} failed`);
|
|
196
|
+
if (failed > 0) {
|
|
197
|
+
console.error(`\n ✗ ${failed} test(s) failed`);
|
|
198
|
+
process.exit(1);
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
console.log(`\n ✅ All ${passed} tests passing`);
|
|
202
|
+
}
|
|
86
203
|
//# sourceMappingURL=test.js.map
|
package/dist/test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/constants.js
CHANGED
|
@@ -1,70 +1,73 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FESTIVAL_CONFIG = exports.FESTIVAL_MERCHANTS = exports.EDGE_TEMPLATES = exports.DEFAULT_GAS_BUDGET = exports.EDGE_PACKAGE_ID = exports.NETWORK_URLS = exports.MIST_PER_SUI = void 0;
|
|
4
|
+
exports.MIST_PER_SUI = BigInt(1000000000);
|
|
5
|
+
exports.NETWORK_URLS = {
|
|
3
6
|
mainnet: 'https://fullnode.mainnet.sui.io',
|
|
4
7
|
testnet: 'https://fullnode.testnet.sui.io',
|
|
5
8
|
devnet: 'https://fullnode.devnet.sui.io',
|
|
6
9
|
};
|
|
7
|
-
|
|
10
|
+
exports.EDGE_PACKAGE_ID = {
|
|
8
11
|
mainnet: '',
|
|
9
12
|
testnet: '0x9f4065009494aa5acd92a5c72a6c22ce80939b2bddae3b34345459bc98d2501d',
|
|
10
13
|
devnet: '',
|
|
11
14
|
};
|
|
12
|
-
|
|
15
|
+
exports.DEFAULT_GAS_BUDGET = BigInt(10000000);
|
|
13
16
|
// ── Templates ─────────────────────────────────────────────────────────────
|
|
14
|
-
|
|
17
|
+
exports.EDGE_TEMPLATES = {
|
|
15
18
|
festival: {
|
|
16
|
-
budget: BigInt(300) * MIST_PER_SUI,
|
|
17
|
-
autoThreshold: BigInt(50) * MIST_PER_SUI,
|
|
18
|
-
escalateThreshold: BigInt(100) * MIST_PER_SUI,
|
|
19
|
-
maxPerTransaction: BigInt(200) * MIST_PER_SUI,
|
|
19
|
+
budget: BigInt(300) * exports.MIST_PER_SUI,
|
|
20
|
+
autoThreshold: BigInt(50) * exports.MIST_PER_SUI,
|
|
21
|
+
escalateThreshold: BigInt(100) * exports.MIST_PER_SUI,
|
|
22
|
+
maxPerTransaction: BigInt(200) * exports.MIST_PER_SUI,
|
|
20
23
|
expiryMs: 48 * 60 * 60 * 1000,
|
|
21
24
|
approvedMerchants: [],
|
|
22
25
|
},
|
|
23
26
|
gaming: {
|
|
24
|
-
budget: BigInt(50) * MIST_PER_SUI,
|
|
25
|
-
autoThreshold: BigInt(2) * MIST_PER_SUI,
|
|
26
|
-
escalateThreshold: BigInt(10) * MIST_PER_SUI,
|
|
27
|
-
maxPerTransaction: BigInt(10) * MIST_PER_SUI,
|
|
27
|
+
budget: BigInt(50) * exports.MIST_PER_SUI,
|
|
28
|
+
autoThreshold: BigInt(2) * exports.MIST_PER_SUI,
|
|
29
|
+
escalateThreshold: BigInt(10) * exports.MIST_PER_SUI,
|
|
30
|
+
maxPerTransaction: BigInt(10) * exports.MIST_PER_SUI,
|
|
28
31
|
expiryMs: 4 * 60 * 60 * 1000,
|
|
29
32
|
approvedMerchants: [],
|
|
30
33
|
},
|
|
31
34
|
subscription: {
|
|
32
|
-
budget: BigInt(200) * MIST_PER_SUI,
|
|
33
|
-
autoThreshold: BigInt(20) * MIST_PER_SUI,
|
|
34
|
-
escalateThreshold: BigInt(50) * MIST_PER_SUI,
|
|
35
|
-
maxPerTransaction: BigInt(50) * MIST_PER_SUI,
|
|
35
|
+
budget: BigInt(200) * exports.MIST_PER_SUI,
|
|
36
|
+
autoThreshold: BigInt(20) * exports.MIST_PER_SUI,
|
|
37
|
+
escalateThreshold: BigInt(50) * exports.MIST_PER_SUI,
|
|
38
|
+
maxPerTransaction: BigInt(50) * exports.MIST_PER_SUI,
|
|
36
39
|
expiryMs: 30 * 24 * 60 * 60 * 1000,
|
|
37
40
|
approvedMerchants: [],
|
|
38
41
|
},
|
|
39
42
|
defi: {
|
|
40
|
-
budget: BigInt(10000) * MIST_PER_SUI,
|
|
41
|
-
autoThreshold: BigInt(500) * MIST_PER_SUI,
|
|
42
|
-
escalateThreshold: BigInt(1000) * MIST_PER_SUI,
|
|
43
|
-
maxPerTransaction: BigInt(2000) * MIST_PER_SUI,
|
|
43
|
+
budget: BigInt(10000) * exports.MIST_PER_SUI,
|
|
44
|
+
autoThreshold: BigInt(500) * exports.MIST_PER_SUI,
|
|
45
|
+
escalateThreshold: BigInt(1000) * exports.MIST_PER_SUI,
|
|
46
|
+
maxPerTransaction: BigInt(2000) * exports.MIST_PER_SUI,
|
|
44
47
|
expiryMs: 7 * 24 * 60 * 60 * 1000,
|
|
45
48
|
approvedMerchants: [],
|
|
46
49
|
},
|
|
47
50
|
enterprise: {
|
|
48
|
-
budget: BigInt(50000) * MIST_PER_SUI,
|
|
49
|
-
autoThreshold: BigInt(1000) * MIST_PER_SUI,
|
|
50
|
-
escalateThreshold: BigInt(5000) * MIST_PER_SUI,
|
|
51
|
-
maxPerTransaction: BigInt(10000) * MIST_PER_SUI,
|
|
51
|
+
budget: BigInt(50000) * exports.MIST_PER_SUI,
|
|
52
|
+
autoThreshold: BigInt(1000) * exports.MIST_PER_SUI,
|
|
53
|
+
escalateThreshold: BigInt(5000) * exports.MIST_PER_SUI,
|
|
54
|
+
maxPerTransaction: BigInt(10000) * exports.MIST_PER_SUI,
|
|
52
55
|
expiryMs: 30 * 24 * 60 * 60 * 1000,
|
|
53
56
|
approvedMerchants: [],
|
|
54
57
|
},
|
|
55
58
|
};
|
|
56
59
|
// ── Legacy festival constants (kept for backwards compat) ─────────────────
|
|
57
|
-
|
|
60
|
+
exports.FESTIVAL_MERCHANTS = [
|
|
58
61
|
'Shuttle Express',
|
|
59
62
|
'Festival Kitchen',
|
|
60
63
|
'Hydra Bar',
|
|
61
64
|
'Stage Access VIP',
|
|
62
65
|
'Official Merch',
|
|
63
66
|
];
|
|
64
|
-
|
|
65
|
-
budget: BigInt(300) * MIST_PER_SUI,
|
|
66
|
-
autoThreshold: BigInt(50) * MIST_PER_SUI,
|
|
67
|
-
escalateThreshold: BigInt(100) * MIST_PER_SUI,
|
|
67
|
+
exports.FESTIVAL_CONFIG = {
|
|
68
|
+
budget: BigInt(300) * exports.MIST_PER_SUI,
|
|
69
|
+
autoThreshold: BigInt(50) * exports.MIST_PER_SUI,
|
|
70
|
+
escalateThreshold: BigInt(100) * exports.MIST_PER_SUI,
|
|
68
71
|
expiryMs: 48 * 60 * 60 * 1000,
|
|
69
72
|
};
|
|
70
73
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/types.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ export interface EdgePassConfig {
|
|
|
2
2
|
budget: bigint;
|
|
3
3
|
autoThreshold: bigint;
|
|
4
4
|
escalateThreshold: bigint;
|
|
5
|
+
maxPerTransaction?: bigint;
|
|
5
6
|
approvedMerchants: string[];
|
|
6
7
|
expiryMs: number;
|
|
7
8
|
owner: string;
|
|
@@ -20,15 +21,16 @@ export interface TransactionRequest {
|
|
|
20
21
|
metadata?: Record<string, string>;
|
|
21
22
|
}
|
|
22
23
|
export type TransactionOutcome = {
|
|
23
|
-
status:
|
|
24
|
+
status: 'approved';
|
|
24
25
|
digest: string;
|
|
26
|
+
objectId?: string;
|
|
25
27
|
auto: true;
|
|
26
28
|
} | {
|
|
27
|
-
status:
|
|
29
|
+
status: 'escalated';
|
|
28
30
|
reason: string;
|
|
29
31
|
auto: false;
|
|
30
32
|
} | {
|
|
31
|
-
status:
|
|
33
|
+
status: 'blocked';
|
|
32
34
|
reason: string;
|
|
33
35
|
auto: false;
|
|
34
36
|
};
|
|
@@ -37,7 +39,7 @@ export interface PolicyValidation {
|
|
|
37
39
|
requiresEscalation: boolean;
|
|
38
40
|
reason: string;
|
|
39
41
|
}
|
|
40
|
-
export type Network =
|
|
42
|
+
export type Network = 'mainnet' | 'testnet' | 'devnet';
|
|
41
43
|
export interface EdgeSDKConfig {
|
|
42
44
|
network: Network;
|
|
43
45
|
enokiApiKey: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/utils/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,cAAc,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC;AAED,MAAM,MAAM,kBAAkB,GAC1B;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/utils/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,cAAc,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC;AAED,MAAM,MAAM,kBAAkB,GAC1B;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,GACrE;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,KAAK,CAAA;CAAE,GACpD;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,KAAK,CAAA;CAAE,CAAC;AAEvD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEvD,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB"}
|
package/dist/utils/types.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@edge-protocol/sdk",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.6",
|
|
4
4
|
"description": "Programmable trust infrastructure for autonomous AI agents on Sui. Give agents your rules, not your keys.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -52,6 +52,7 @@
|
|
|
52
52
|
"@mysten/zklogin": "^0.8.1"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
|
+
"@types/node": "^20.19.41",
|
|
55
56
|
"ts-node": "^10.9.2",
|
|
56
57
|
"typescript": "^5.9.3"
|
|
57
58
|
},
|