@agirails/sdk 2.0.0-beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +183 -0
- package/dist/ACTPClient.d.ts +52 -0
- package/dist/ACTPClient.d.ts.map +1 -0
- package/dist/ACTPClient.js +120 -0
- package/dist/ACTPClient.js.map +1 -0
- package/dist/abi/ACTPKernel.json +1340 -0
- package/dist/abi/ERC20.json +38 -0
- package/dist/abi/EscrowVault.json +64 -0
- package/dist/builders/DeliveryProofBuilder.d.ts +37 -0
- package/dist/builders/DeliveryProofBuilder.d.ts.map +1 -0
- package/dist/builders/DeliveryProofBuilder.js +165 -0
- package/dist/builders/DeliveryProofBuilder.js.map +1 -0
- package/dist/builders/QuoteBuilder.d.ts +68 -0
- package/dist/builders/QuoteBuilder.d.ts.map +1 -0
- package/dist/builders/QuoteBuilder.js +255 -0
- package/dist/builders/QuoteBuilder.js.map +1 -0
- package/dist/builders/index.d.ts +3 -0
- package/dist/builders/index.d.ts.map +1 -0
- package/dist/builders/index.js +10 -0
- package/dist/builders/index.js.map +1 -0
- package/dist/config/networks.d.ts +27 -0
- package/dist/config/networks.d.ts.map +1 -0
- package/dist/config/networks.js +103 -0
- package/dist/config/networks.js.map +1 -0
- package/dist/errors/index.d.ts +38 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +87 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +68 -0
- package/dist/index.js.map +1 -0
- package/dist/protocol/ACTPKernel.d.ts +30 -0
- package/dist/protocol/ACTPKernel.d.ts.map +1 -0
- package/dist/protocol/ACTPKernel.js +261 -0
- package/dist/protocol/ACTPKernel.js.map +1 -0
- package/dist/protocol/EASHelper.d.ts +23 -0
- package/dist/protocol/EASHelper.d.ts.map +1 -0
- package/dist/protocol/EASHelper.js +106 -0
- package/dist/protocol/EASHelper.js.map +1 -0
- package/dist/protocol/EscrowVault.d.ts +24 -0
- package/dist/protocol/EscrowVault.d.ts.map +1 -0
- package/dist/protocol/EscrowVault.js +114 -0
- package/dist/protocol/EscrowVault.js.map +1 -0
- package/dist/protocol/EventMonitor.d.ts +18 -0
- package/dist/protocol/EventMonitor.d.ts.map +1 -0
- package/dist/protocol/EventMonitor.js +92 -0
- package/dist/protocol/EventMonitor.js.map +1 -0
- package/dist/protocol/MessageSigner.d.ts +23 -0
- package/dist/protocol/MessageSigner.d.ts.map +1 -0
- package/dist/protocol/MessageSigner.js +178 -0
- package/dist/protocol/MessageSigner.js.map +1 -0
- package/dist/protocol/ProofGenerator.d.ts +22 -0
- package/dist/protocol/ProofGenerator.d.ts.map +1 -0
- package/dist/protocol/ProofGenerator.js +64 -0
- package/dist/protocol/ProofGenerator.js.map +1 -0
- package/dist/protocol/QuoteBuilder.d.ts +2 -0
- package/dist/protocol/QuoteBuilder.d.ts.map +1 -0
- package/dist/protocol/QuoteBuilder.js +7 -0
- package/dist/protocol/QuoteBuilder.js.map +1 -0
- package/dist/types/eip712.d.ts +106 -0
- package/dist/types/eip712.d.ts.map +1 -0
- package/dist/types/eip712.js +84 -0
- package/dist/types/eip712.js.map +1 -0
- package/dist/types/escrow.d.ts +18 -0
- package/dist/types/escrow.d.ts.map +1 -0
- package/dist/types/escrow.js +3 -0
- package/dist/types/escrow.js.map +1 -0
- package/dist/types/index.d.ts +6 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +22 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/message.d.ts +109 -0
- package/dist/types/message.d.ts.map +1 -0
- package/dist/types/message.js +3 -0
- package/dist/types/message.js.map +1 -0
- package/dist/types/state.d.ts +19 -0
- package/dist/types/state.d.ts.map +1 -0
- package/dist/types/state.js +49 -0
- package/dist/types/state.js.map +1 -0
- package/dist/types/transaction.d.ts +36 -0
- package/dist/types/transaction.d.ts.map +1 -0
- package/dist/types/transaction.js +3 -0
- package/dist/types/transaction.js.map +1 -0
- package/dist/utils/IPFSClient.d.ts +37 -0
- package/dist/utils/IPFSClient.d.ts.map +1 -0
- package/dist/utils/IPFSClient.js +128 -0
- package/dist/utils/IPFSClient.js.map +1 -0
- package/dist/utils/NonceManager.d.ts +34 -0
- package/dist/utils/NonceManager.d.ts.map +1 -0
- package/dist/utils/NonceManager.js +114 -0
- package/dist/utils/NonceManager.js.map +1 -0
- package/dist/utils/ReceivedNonceTracker.d.ts +35 -0
- package/dist/utils/ReceivedNonceTracker.d.ts.map +1 -0
- package/dist/utils/ReceivedNonceTracker.js +196 -0
- package/dist/utils/ReceivedNonceTracker.js.map +1 -0
- package/dist/utils/canonicalJson.d.ts +4 -0
- package/dist/utils/canonicalJson.d.ts.map +1 -0
- package/dist/utils/canonicalJson.js +21 -0
- package/dist/utils/canonicalJson.js.map +1 -0
- package/dist/utils/computeTypeHash.d.ts +3 -0
- package/dist/utils/computeTypeHash.d.ts.map +1 -0
- package/dist/utils/computeTypeHash.js +30 -0
- package/dist/utils/computeTypeHash.js.map +1 -0
- package/dist/utils/validation.d.ts +6 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +46 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +73 -0
- package/src/ACTPClient.ts +276 -0
- package/src/__tests__/ProofGenerator.test.ts +124 -0
- package/src/__tests__/QuoteBuilder.test.ts +516 -0
- package/src/__tests__/StateMachine.test.ts +82 -0
- package/src/__tests__/builders/DeliveryProofBuilder.test.ts +581 -0
- package/src/__tests__/integration/ACTPClient.test.ts +263 -0
- package/src/__tests__/integration.test.ts +289 -0
- package/src/__tests__/protocol/EASHelper.test.ts +472 -0
- package/src/__tests__/protocol/EventMonitor.test.ts +382 -0
- package/src/__tests__/security/ACTPKernel.security.test.ts +1167 -0
- package/src/__tests__/security/EscrowVault.security.test.ts +570 -0
- package/src/__tests__/security/MessageSigner.security.test.ts +286 -0
- package/src/__tests__/security/NonceReplay.security.test.ts +501 -0
- package/src/__tests__/security/validation.security.test.ts +376 -0
- package/src/__tests__/utils/IPFSClient.test.ts +262 -0
- package/src/__tests__/utils/NonceManager.test.ts +205 -0
- package/src/__tests__/utils/canonicalJson.test.ts +153 -0
- package/src/abi/ACTPKernel.json +1340 -0
- package/src/abi/ERC20.json +40 -0
- package/src/abi/EscrowVault.json +66 -0
- package/src/builders/DeliveryProofBuilder.ts +326 -0
- package/src/builders/QuoteBuilder.ts +483 -0
- package/src/builders/index.ts +17 -0
- package/src/config/networks.ts +165 -0
- package/src/errors/index.ts +130 -0
- package/src/index.ts +108 -0
- package/src/protocol/ACTPKernel.ts +625 -0
- package/src/protocol/EASHelper.ts +197 -0
- package/src/protocol/EscrowVault.ts +237 -0
- package/src/protocol/EventMonitor.ts +161 -0
- package/src/protocol/MessageSigner.ts +336 -0
- package/src/protocol/ProofGenerator.ts +119 -0
- package/src/protocol/QuoteBuilder.ts +15 -0
- package/src/types/eip712.ts +175 -0
- package/src/types/escrow.ts +26 -0
- package/src/types/index.ts +10 -0
- package/src/types/message.ts +145 -0
- package/src/types/state.ts +77 -0
- package/src/types/transaction.ts +54 -0
- package/src/utils/IPFSClient.ts +248 -0
- package/src/utils/NonceManager.ts +293 -0
- package/src/utils/ReceivedNonceTracker.ts +397 -0
- package/src/utils/canonicalJson.ts +38 -0
- package/src/utils/computeTypeHash.ts +50 -0
- package/src/utils/validation.ts +82 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export interface CreateEscrowParams {
|
|
2
|
+
kernelAddress: string;
|
|
3
|
+
txId: string;
|
|
4
|
+
token: string;
|
|
5
|
+
amount: bigint;
|
|
6
|
+
beneficiary: string;
|
|
7
|
+
}
|
|
8
|
+
export interface Escrow {
|
|
9
|
+
escrowId: string;
|
|
10
|
+
kernel: string;
|
|
11
|
+
txId: string;
|
|
12
|
+
token: string;
|
|
13
|
+
amount: bigint;
|
|
14
|
+
beneficiary: string;
|
|
15
|
+
createdAt: number;
|
|
16
|
+
released: boolean;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=escrow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"escrow.d.ts","sourceRoot":"","sources":["../../src/types/escrow.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB;AAKD,MAAM,WAAW,MAAM;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;CACnB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"escrow.js","sourceRoot":"","sources":["../../src/types/escrow.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAIA,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./state"), exports);
|
|
18
|
+
__exportStar(require("./transaction"), exports);
|
|
19
|
+
__exportStar(require("./escrow"), exports);
|
|
20
|
+
__exportStar(require("./message"), exports);
|
|
21
|
+
__exportStar(require("./eip712"), exports);
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAIA,0CAAwB;AACxB,gDAA8B;AAC9B,2CAAyB;AACzB,4CAA0B;AAC1B,2CAAyB"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
export interface ACTPMessage {
|
|
2
|
+
type: string;
|
|
3
|
+
version: string;
|
|
4
|
+
from: string;
|
|
5
|
+
to: string;
|
|
6
|
+
timestamp: number;
|
|
7
|
+
nonce: string;
|
|
8
|
+
signature?: string;
|
|
9
|
+
[key: string]: any;
|
|
10
|
+
}
|
|
11
|
+
export interface QuoteRequest extends ACTPMessage {
|
|
12
|
+
type: 'quote.request';
|
|
13
|
+
serviceRequest: {
|
|
14
|
+
capabilityType: string;
|
|
15
|
+
parameters: Record<string, any>;
|
|
16
|
+
deliveryRequirements: {
|
|
17
|
+
deadline: string;
|
|
18
|
+
maxDeliveryTime: string;
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
budgetConstraints: {
|
|
22
|
+
maxPrice: string;
|
|
23
|
+
currency: 'USDC';
|
|
24
|
+
};
|
|
25
|
+
expiresAt: string;
|
|
26
|
+
}
|
|
27
|
+
export interface QuoteResponse extends ACTPMessage {
|
|
28
|
+
type: 'quote.response';
|
|
29
|
+
inResponseTo: string;
|
|
30
|
+
quoteId: string;
|
|
31
|
+
pricing: {
|
|
32
|
+
totalPrice: string;
|
|
33
|
+
currency: 'USDC';
|
|
34
|
+
breakdown: Array<{
|
|
35
|
+
item: string;
|
|
36
|
+
amount: string;
|
|
37
|
+
}>;
|
|
38
|
+
platformFee: string;
|
|
39
|
+
};
|
|
40
|
+
sla: {
|
|
41
|
+
successRateGuarantee: number;
|
|
42
|
+
refundPolicy: string;
|
|
43
|
+
};
|
|
44
|
+
expiresAt: string;
|
|
45
|
+
}
|
|
46
|
+
export interface DeliveryProof {
|
|
47
|
+
type: 'delivery.proof';
|
|
48
|
+
txId: string;
|
|
49
|
+
contentHash: string;
|
|
50
|
+
timestamp: number;
|
|
51
|
+
deliveryUrl?: string;
|
|
52
|
+
metadata: {
|
|
53
|
+
size: number;
|
|
54
|
+
mimeType: string;
|
|
55
|
+
[key: string]: any;
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
export interface DeliveryProofMessage {
|
|
59
|
+
type: 'agirails.delivery.v1';
|
|
60
|
+
version: string;
|
|
61
|
+
txId: string;
|
|
62
|
+
provider: string;
|
|
63
|
+
consumer: string;
|
|
64
|
+
resultCID: string;
|
|
65
|
+
resultHash: string;
|
|
66
|
+
metadata?: {
|
|
67
|
+
executionTime?: number;
|
|
68
|
+
outputFormat?: string;
|
|
69
|
+
outputSize?: number;
|
|
70
|
+
notes?: string;
|
|
71
|
+
};
|
|
72
|
+
easAttestationUID: string;
|
|
73
|
+
deliveredAt: number;
|
|
74
|
+
chainId: number;
|
|
75
|
+
nonce: number;
|
|
76
|
+
signature: string;
|
|
77
|
+
}
|
|
78
|
+
export interface EASAttestationData {
|
|
79
|
+
schema: string;
|
|
80
|
+
recipient: string;
|
|
81
|
+
expirationTime: number;
|
|
82
|
+
revocable: boolean;
|
|
83
|
+
refUID: string;
|
|
84
|
+
data: string;
|
|
85
|
+
}
|
|
86
|
+
export interface QuoteMessageV2 {
|
|
87
|
+
type: 'agirails.quote.v1';
|
|
88
|
+
version: '1.0.0';
|
|
89
|
+
txId: string;
|
|
90
|
+
provider: string;
|
|
91
|
+
consumer: string;
|
|
92
|
+
quotedAmount: string;
|
|
93
|
+
originalAmount: string;
|
|
94
|
+
maxPrice: string;
|
|
95
|
+
currency: string;
|
|
96
|
+
decimals: number;
|
|
97
|
+
quotedAt: number;
|
|
98
|
+
expiresAt: number;
|
|
99
|
+
justification?: {
|
|
100
|
+
reason?: string;
|
|
101
|
+
estimatedTime?: number;
|
|
102
|
+
computeCost?: number;
|
|
103
|
+
breakdown?: Record<string, any>;
|
|
104
|
+
};
|
|
105
|
+
chainId: number;
|
|
106
|
+
nonce: number;
|
|
107
|
+
signature: string;
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=message.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../src/types/message.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message.js","sourceRoot":"","sources":["../../src/types/message.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export declare enum State {
|
|
2
|
+
INITIATED = 0,
|
|
3
|
+
QUOTED = 1,
|
|
4
|
+
COMMITTED = 2,
|
|
5
|
+
IN_PROGRESS = 3,
|
|
6
|
+
DELIVERED = 4,
|
|
7
|
+
SETTLED = 5,
|
|
8
|
+
DISPUTED = 6,
|
|
9
|
+
CANCELLED = 7
|
|
10
|
+
}
|
|
11
|
+
export declare class StateMachine {
|
|
12
|
+
private static readonly TRANSITIONS;
|
|
13
|
+
static isValidTransition(from: State, to: State): boolean;
|
|
14
|
+
static isTerminalState(state: State): boolean;
|
|
15
|
+
static getStateName(state: State): string;
|
|
16
|
+
static getNextValidStates(currentState: State): State[];
|
|
17
|
+
static validateTransition(from: State, to: State): void;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/types/state.ts"],"names":[],"mappings":"AAKA,oBAAY,KAAK;IACf,SAAS,IAAI;IACb,MAAM,IAAI;IACV,SAAS,IAAI;IACb,WAAW,IAAI;IACf,SAAS,IAAI;IACb,OAAO,IAAI;IACX,QAAQ,IAAI;IACZ,SAAS,IAAI;CACd;AAED,qBAAa,YAAY;IAIvB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CASjC;IAKF,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,GAAG,OAAO;IAOzD,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAO7C,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM;IAOzC,MAAM,CAAC,kBAAkB,CAAC,YAAY,EAAE,KAAK,GAAG,KAAK,EAAE;IAOvD,MAAM,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,GAAG,IAAI;CAYxD"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StateMachine = exports.State = void 0;
|
|
4
|
+
var State;
|
|
5
|
+
(function (State) {
|
|
6
|
+
State[State["INITIATED"] = 0] = "INITIATED";
|
|
7
|
+
State[State["QUOTED"] = 1] = "QUOTED";
|
|
8
|
+
State[State["COMMITTED"] = 2] = "COMMITTED";
|
|
9
|
+
State[State["IN_PROGRESS"] = 3] = "IN_PROGRESS";
|
|
10
|
+
State[State["DELIVERED"] = 4] = "DELIVERED";
|
|
11
|
+
State[State["SETTLED"] = 5] = "SETTLED";
|
|
12
|
+
State[State["DISPUTED"] = 6] = "DISPUTED";
|
|
13
|
+
State[State["CANCELLED"] = 7] = "CANCELLED";
|
|
14
|
+
})(State || (exports.State = State = {}));
|
|
15
|
+
class StateMachine {
|
|
16
|
+
static isValidTransition(from, to) {
|
|
17
|
+
return this.TRANSITIONS[from]?.includes(to) ?? false;
|
|
18
|
+
}
|
|
19
|
+
static isTerminalState(state) {
|
|
20
|
+
return state === State.SETTLED || state === State.CANCELLED;
|
|
21
|
+
}
|
|
22
|
+
static getStateName(state) {
|
|
23
|
+
return State[state];
|
|
24
|
+
}
|
|
25
|
+
static getNextValidStates(currentState) {
|
|
26
|
+
return this.TRANSITIONS[currentState] || [];
|
|
27
|
+
}
|
|
28
|
+
static validateTransition(from, to) {
|
|
29
|
+
if (!this.isValidTransition(from, to)) {
|
|
30
|
+
const validStates = this.getNextValidStates(from)
|
|
31
|
+
.map(s => State[s])
|
|
32
|
+
.join(', ');
|
|
33
|
+
throw new Error(`Invalid state transition: ${State[from]} → ${State[to]}. ` +
|
|
34
|
+
`Valid transitions from ${State[from]}: ${validStates || 'none (terminal state)'}`);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
exports.StateMachine = StateMachine;
|
|
39
|
+
StateMachine.TRANSITIONS = {
|
|
40
|
+
[State.INITIATED]: [State.QUOTED, State.COMMITTED, State.CANCELLED],
|
|
41
|
+
[State.QUOTED]: [State.COMMITTED, State.CANCELLED],
|
|
42
|
+
[State.COMMITTED]: [State.IN_PROGRESS, State.CANCELLED],
|
|
43
|
+
[State.IN_PROGRESS]: [State.DELIVERED, State.DISPUTED],
|
|
44
|
+
[State.DELIVERED]: [State.SETTLED, State.DISPUTED],
|
|
45
|
+
[State.DISPUTED]: [State.SETTLED, State.CANCELLED],
|
|
46
|
+
[State.SETTLED]: [],
|
|
47
|
+
[State.CANCELLED]: []
|
|
48
|
+
};
|
|
49
|
+
//# sourceMappingURL=state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/types/state.ts"],"names":[],"mappings":";;;AAKA,IAAY,KASX;AATD,WAAY,KAAK;IACf,2CAAa,CAAA;IACb,qCAAU,CAAA;IACV,2CAAa,CAAA;IACb,+CAAe,CAAA;IACf,2CAAa,CAAA;IACb,uCAAW,CAAA;IACX,yCAAY,CAAA;IACZ,2CAAa,CAAA;AACf,CAAC,EATW,KAAK,qBAAL,KAAK,QAShB;AAED,MAAa,YAAY;IAkBvB,MAAM,CAAC,iBAAiB,CAAC,IAAW,EAAE,EAAS;QAC7C,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC;IACvD,CAAC;IAKD,MAAM,CAAC,eAAe,CAAC,KAAY;QACjC,OAAO,KAAK,KAAK,KAAK,CAAC,OAAO,IAAI,KAAK,KAAK,KAAK,CAAC,SAAS,CAAC;IAC9D,CAAC;IAKD,MAAM,CAAC,YAAY,CAAC,KAAY;QAC9B,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;IAKD,MAAM,CAAC,kBAAkB,CAAC,YAAmB;QAC3C,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;IAC9C,CAAC;IAKD,MAAM,CAAC,kBAAkB,CAAC,IAAW,EAAE,EAAS;QAC9C,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;YACtC,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;iBAC9C,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;iBAClB,IAAI,CAAC,IAAI,CAAC,CAAC;YAEd,MAAM,IAAI,KAAK,CACb,6BAA6B,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,IAAI;gBAC3D,0BAA0B,KAAK,CAAC,IAAI,CAAC,KAAK,WAAW,IAAI,uBAAuB,EAAE,CACnF,CAAC;QACJ,CAAC;IACH,CAAC;;AAzDH,oCA0DC;AAtDyB,wBAAW,GAA2B;IAC5D,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC;IACnE,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC;IAClD,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC;IACvD,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC;IACtD,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC;IAClD,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IAClD,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE;IACnB,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE;CACtB,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { State } from './state';
|
|
2
|
+
export interface Transaction {
|
|
3
|
+
txId: string;
|
|
4
|
+
requester: string;
|
|
5
|
+
provider: string;
|
|
6
|
+
amount: bigint;
|
|
7
|
+
state: State;
|
|
8
|
+
createdAt: number;
|
|
9
|
+
deadline: number;
|
|
10
|
+
disputeWindow: number;
|
|
11
|
+
escrowContract: string;
|
|
12
|
+
escrowId: string;
|
|
13
|
+
metadata: string;
|
|
14
|
+
}
|
|
15
|
+
export interface CreateTransactionParams {
|
|
16
|
+
provider: string;
|
|
17
|
+
requester: string;
|
|
18
|
+
amount: bigint;
|
|
19
|
+
deadline: number;
|
|
20
|
+
disputeWindow: number;
|
|
21
|
+
metadata?: string;
|
|
22
|
+
}
|
|
23
|
+
export interface DisputeResolution {
|
|
24
|
+
requesterAmount: bigint;
|
|
25
|
+
providerAmount: bigint;
|
|
26
|
+
mediatorAmount: bigint;
|
|
27
|
+
mediator?: string;
|
|
28
|
+
}
|
|
29
|
+
export interface EconomicParams {
|
|
30
|
+
baseFeeNumerator: number;
|
|
31
|
+
baseFeeDenominator: number;
|
|
32
|
+
feeRecipient: string;
|
|
33
|
+
requesterPenaltyBps: number;
|
|
34
|
+
providerPenaltyBps: number;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=transaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../src/types/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAMhC,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,KAAK,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAKD,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAKD,MAAM,WAAW,iBAAiB;IAChC,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAKD,MAAM,WAAW,cAAc;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kBAAkB,EAAE,MAAM,CAAC;CAC5B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transaction.js","sourceRoot":"","sources":["../../src/types/transaction.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export interface IPFSClient {
|
|
2
|
+
add(data: string | Buffer): Promise<string>;
|
|
3
|
+
pin(cid: string): Promise<void>;
|
|
4
|
+
get(cid: string): Promise<string>;
|
|
5
|
+
}
|
|
6
|
+
export interface IPFSClientConfig {
|
|
7
|
+
url?: string;
|
|
8
|
+
auth?: {
|
|
9
|
+
username: string;
|
|
10
|
+
password: string;
|
|
11
|
+
};
|
|
12
|
+
headers?: Record<string, string>;
|
|
13
|
+
timeout?: number;
|
|
14
|
+
}
|
|
15
|
+
export declare const IPFS_CONFIGS: {
|
|
16
|
+
local: {
|
|
17
|
+
url: string;
|
|
18
|
+
};
|
|
19
|
+
infura: {
|
|
20
|
+
url: string;
|
|
21
|
+
};
|
|
22
|
+
pinata: {
|
|
23
|
+
url: string;
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
export declare class IPFSHTTPClientImpl implements IPFSClient {
|
|
27
|
+
private client;
|
|
28
|
+
private config;
|
|
29
|
+
constructor(config?: IPFSClientConfig);
|
|
30
|
+
add(data: string | Buffer): Promise<string>;
|
|
31
|
+
pin(cid: string): Promise<void>;
|
|
32
|
+
get(cid: string): Promise<string>;
|
|
33
|
+
isOnline(): Promise<boolean>;
|
|
34
|
+
getNodeId(): Promise<string>;
|
|
35
|
+
}
|
|
36
|
+
export declare function createIPFSClient(): IPFSClient;
|
|
37
|
+
//# sourceMappingURL=IPFSClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IPFSClient.d.ts","sourceRoot":"","sources":["../../src/utils/IPFSClient.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,UAAU;IAMzB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAM5C,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAOhC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACnC;AAKD,MAAM,WAAW,gBAAgB;IAM/B,GAAG,CAAC,EAAE,MAAM,CAAC;IAKb,IAAI,CAAC,EAAE;QACL,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IAKF,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAMjC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAKD,eAAO,MAAM,YAAY;;;;;;;;;;CAYxB,CAAC;AAMF,qBAAa,kBAAmB,YAAW,UAAU;IACnD,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,MAAM,CAAmB;gBAMrB,MAAM,GAAE,gBAAqB;IAgCnC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAqB3C,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAa/B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA4BjC,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC;IAa5B,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;CAQnC;AAMD,wBAAgB,gBAAgB,IAAI,UAAU,CAkC7C"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.IPFSHTTPClientImpl = exports.IPFS_CONFIGS = void 0;
|
|
4
|
+
exports.createIPFSClient = createIPFSClient;
|
|
5
|
+
const kubo_rpc_client_1 = require("kubo-rpc-client");
|
|
6
|
+
exports.IPFS_CONFIGS = {
|
|
7
|
+
local: {
|
|
8
|
+
url: 'http://localhost:5001'
|
|
9
|
+
},
|
|
10
|
+
infura: {
|
|
11
|
+
url: 'https://ipfs.infura.io:5001/api/v0'
|
|
12
|
+
},
|
|
13
|
+
pinata: {
|
|
14
|
+
url: 'https://api.pinata.cloud'
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
class IPFSHTTPClientImpl {
|
|
18
|
+
constructor(config = {}) {
|
|
19
|
+
this.config = {
|
|
20
|
+
url: config.url || 'http://localhost:5001',
|
|
21
|
+
timeout: config.timeout || 60000,
|
|
22
|
+
...config
|
|
23
|
+
};
|
|
24
|
+
const options = {
|
|
25
|
+
url: this.config.url,
|
|
26
|
+
timeout: this.config.timeout
|
|
27
|
+
};
|
|
28
|
+
if (this.config.auth) {
|
|
29
|
+
options.headers = {
|
|
30
|
+
...this.config.headers,
|
|
31
|
+
authorization: 'Basic ' + Buffer.from(`${this.config.auth.username}:${this.config.auth.password}`).toString('base64')
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
else if (this.config.headers) {
|
|
35
|
+
options.headers = this.config.headers;
|
|
36
|
+
}
|
|
37
|
+
this.client = (0, kubo_rpc_client_1.create)(options);
|
|
38
|
+
}
|
|
39
|
+
async add(data) {
|
|
40
|
+
try {
|
|
41
|
+
const content = typeof data === 'string' ? Buffer.from(data, 'utf-8') : data;
|
|
42
|
+
const result = await this.client.add(content, {
|
|
43
|
+
cidVersion: 1,
|
|
44
|
+
hashAlg: 'sha2-256',
|
|
45
|
+
pin: true
|
|
46
|
+
});
|
|
47
|
+
return result.cid.toString();
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
throw new Error(`IPFS upload failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
async pin(cid) {
|
|
54
|
+
try {
|
|
55
|
+
await this.client.pin.add(cid);
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
throw new Error(`IPFS pin failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
async get(cid) {
|
|
62
|
+
try {
|
|
63
|
+
const chunks = [];
|
|
64
|
+
for await (const chunk of this.client.cat(cid)) {
|
|
65
|
+
chunks.push(chunk);
|
|
66
|
+
}
|
|
67
|
+
const totalLength = chunks.reduce((acc, chunk) => acc + chunk.length, 0);
|
|
68
|
+
const result = new Uint8Array(totalLength);
|
|
69
|
+
let offset = 0;
|
|
70
|
+
for (const chunk of chunks) {
|
|
71
|
+
result.set(chunk, offset);
|
|
72
|
+
offset += chunk.length;
|
|
73
|
+
}
|
|
74
|
+
return Buffer.from(result).toString('utf-8');
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
throw new Error(`IPFS retrieval failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
async isOnline() {
|
|
81
|
+
try {
|
|
82
|
+
await this.client.id();
|
|
83
|
+
return true;
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
return false;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
async getNodeId() {
|
|
90
|
+
try {
|
|
91
|
+
const id = await this.client.id();
|
|
92
|
+
return id.id.toString();
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
throw new Error(`Failed to get node ID: ${error instanceof Error ? error.message : String(error)}`);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
exports.IPFSHTTPClientImpl = IPFSHTTPClientImpl;
|
|
100
|
+
function createIPFSClient() {
|
|
101
|
+
if (process.env.INFURA_PROJECT_ID && process.env.INFURA_PROJECT_SECRET) {
|
|
102
|
+
return new IPFSHTTPClientImpl({
|
|
103
|
+
url: 'https://ipfs.infura.io:5001/api/v0',
|
|
104
|
+
auth: {
|
|
105
|
+
username: process.env.INFURA_PROJECT_ID,
|
|
106
|
+
password: process.env.INFURA_PROJECT_SECRET
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
if (process.env.PINATA_API_KEY && process.env.PINATA_SECRET_API_KEY) {
|
|
111
|
+
return new IPFSHTTPClientImpl({
|
|
112
|
+
url: 'https://api.pinata.cloud',
|
|
113
|
+
headers: {
|
|
114
|
+
pinata_api_key: process.env.PINATA_API_KEY,
|
|
115
|
+
pinata_secret_api_key: process.env.PINATA_SECRET_API_KEY
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
if (process.env.IPFS_URL) {
|
|
120
|
+
return new IPFSHTTPClientImpl({
|
|
121
|
+
url: process.env.IPFS_URL
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
return new IPFSHTTPClientImpl({
|
|
125
|
+
url: 'http://localhost:5001'
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=IPFSClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IPFSClient.js","sourceRoot":"","sources":["../../src/utils/IPFSClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export interface NonceManager {
|
|
2
|
+
getNextNonce(messageType: string): number;
|
|
3
|
+
recordNonce(messageType: string, nonce: number): void;
|
|
4
|
+
getCurrentNonce(messageType: string): number;
|
|
5
|
+
resetNonce(messageType: string): void;
|
|
6
|
+
}
|
|
7
|
+
export declare class InMemoryNonceManager implements NonceManager {
|
|
8
|
+
private nonces;
|
|
9
|
+
constructor(initialNonces?: Record<string, number>);
|
|
10
|
+
getNextNonce(messageType: string): number;
|
|
11
|
+
recordNonce(messageType: string, nonce: number): void;
|
|
12
|
+
getCurrentNonce(messageType: string): number;
|
|
13
|
+
resetNonce(messageType: string): void;
|
|
14
|
+
getAllNonces(): Record<string, number>;
|
|
15
|
+
clearAll(): void;
|
|
16
|
+
}
|
|
17
|
+
export declare class DIDScopedNonceManager implements NonceManager {
|
|
18
|
+
private nonces;
|
|
19
|
+
private currentDID;
|
|
20
|
+
constructor(did: string, initialNonces?: Record<string, number>);
|
|
21
|
+
getNextNonce(messageType: string): number;
|
|
22
|
+
recordNonce(messageType: string, nonce: number): void;
|
|
23
|
+
getCurrentNonce(messageType: string): number;
|
|
24
|
+
resetNonce(messageType: string): void;
|
|
25
|
+
getNextNonceForDID(did: string, messageType: string): number;
|
|
26
|
+
recordNonceForDID(did: string, messageType: string, nonce: number): void;
|
|
27
|
+
getCurrentNonceForDID(did: string, messageType: string): number;
|
|
28
|
+
resetNonceForDID(did: string, messageType: string): void;
|
|
29
|
+
switchDID(did: string): void;
|
|
30
|
+
getAllNonces(): Record<string, Record<string, number>>;
|
|
31
|
+
clearAll(): void;
|
|
32
|
+
}
|
|
33
|
+
export declare function createNonceManager(did?: string, initialNonces?: Record<string, number>): NonceManager;
|
|
34
|
+
//# sourceMappingURL=NonceManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NonceManager.d.ts","sourceRoot":"","sources":["../../src/utils/NonceManager.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,YAAY;IAM3B,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;IAO1C,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAOtD,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;IAM7C,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CACvC;AAWD,qBAAa,oBAAqB,YAAW,YAAY;IACvD,OAAO,CAAC,MAAM,CAAkC;gBAMpC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAalD,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAUzC,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAkBrD,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAQ5C,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAQrC,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAOtC,QAAQ,IAAI,IAAI;CAGjB;AAOD,qBAAa,qBAAsB,YAAW,YAAY;IACxD,OAAO,CAAC,MAAM,CAA+C;IAC7D,OAAO,CAAC,UAAU,CAAS;gBAOf,GAAG,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAiB/D,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IASzC,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IASrD,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAQ5C,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAUrC,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM;IAe5D,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IA0BxE,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM;IAU/D,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAWxD,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAQ5B,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAatD,QAAQ,IAAI,IAAI;CAGjB;AAQD,wBAAgB,kBAAkB,CAChC,GAAG,CAAC,EAAE,MAAM,EACZ,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACrC,YAAY,CAKd"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DIDScopedNonceManager = exports.InMemoryNonceManager = void 0;
|
|
4
|
+
exports.createNonceManager = createNonceManager;
|
|
5
|
+
class InMemoryNonceManager {
|
|
6
|
+
constructor(initialNonces) {
|
|
7
|
+
this.nonces = new Map();
|
|
8
|
+
if (initialNonces) {
|
|
9
|
+
Object.entries(initialNonces).forEach(([messageType, nonce]) => {
|
|
10
|
+
this.nonces.set(messageType, nonce);
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
getNextNonce(messageType) {
|
|
15
|
+
const current = this.nonces.get(messageType) || 0;
|
|
16
|
+
return current + 1;
|
|
17
|
+
}
|
|
18
|
+
recordNonce(messageType, nonce) {
|
|
19
|
+
const current = this.nonces.get(messageType) || 0;
|
|
20
|
+
if (nonce <= current) {
|
|
21
|
+
throw new Error(`Nonce must be strictly increasing: attempted ${nonce}, current is ${current}`);
|
|
22
|
+
}
|
|
23
|
+
this.nonces.set(messageType, nonce);
|
|
24
|
+
}
|
|
25
|
+
getCurrentNonce(messageType) {
|
|
26
|
+
return this.nonces.get(messageType) || 0;
|
|
27
|
+
}
|
|
28
|
+
resetNonce(messageType) {
|
|
29
|
+
this.nonces.delete(messageType);
|
|
30
|
+
}
|
|
31
|
+
getAllNonces() {
|
|
32
|
+
return Object.fromEntries(this.nonces.entries());
|
|
33
|
+
}
|
|
34
|
+
clearAll() {
|
|
35
|
+
this.nonces.clear();
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
exports.InMemoryNonceManager = InMemoryNonceManager;
|
|
39
|
+
class DIDScopedNonceManager {
|
|
40
|
+
constructor(did, initialNonces) {
|
|
41
|
+
this.nonces = new Map();
|
|
42
|
+
this.currentDID = did;
|
|
43
|
+
if (initialNonces) {
|
|
44
|
+
const didNonces = new Map();
|
|
45
|
+
Object.entries(initialNonces).forEach(([messageType, nonce]) => {
|
|
46
|
+
didNonces.set(messageType, nonce);
|
|
47
|
+
});
|
|
48
|
+
this.nonces.set(did, didNonces);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
getNextNonce(messageType) {
|
|
52
|
+
return this.getNextNonceForDID(this.currentDID, messageType);
|
|
53
|
+
}
|
|
54
|
+
recordNonce(messageType, nonce) {
|
|
55
|
+
this.recordNonceForDID(this.currentDID, messageType, nonce);
|
|
56
|
+
}
|
|
57
|
+
getCurrentNonce(messageType) {
|
|
58
|
+
return this.getCurrentNonceForDID(this.currentDID, messageType);
|
|
59
|
+
}
|
|
60
|
+
resetNonce(messageType) {
|
|
61
|
+
this.resetNonceForDID(this.currentDID, messageType);
|
|
62
|
+
}
|
|
63
|
+
getNextNonceForDID(did, messageType) {
|
|
64
|
+
const didNonces = this.nonces.get(did);
|
|
65
|
+
if (!didNonces) {
|
|
66
|
+
return 1;
|
|
67
|
+
}
|
|
68
|
+
const current = didNonces.get(messageType) || 0;
|
|
69
|
+
return current + 1;
|
|
70
|
+
}
|
|
71
|
+
recordNonceForDID(did, messageType, nonce) {
|
|
72
|
+
let didNonces = this.nonces.get(did);
|
|
73
|
+
if (!didNonces) {
|
|
74
|
+
didNonces = new Map();
|
|
75
|
+
this.nonces.set(did, didNonces);
|
|
76
|
+
}
|
|
77
|
+
const current = didNonces.get(messageType) || 0;
|
|
78
|
+
if (nonce <= current) {
|
|
79
|
+
throw new Error(`Nonce must be strictly increasing for ${did}: attempted ${nonce}, current is ${current}`);
|
|
80
|
+
}
|
|
81
|
+
didNonces.set(messageType, nonce);
|
|
82
|
+
}
|
|
83
|
+
getCurrentNonceForDID(did, messageType) {
|
|
84
|
+
const didNonces = this.nonces.get(did);
|
|
85
|
+
return didNonces?.get(messageType) || 0;
|
|
86
|
+
}
|
|
87
|
+
resetNonceForDID(did, messageType) {
|
|
88
|
+
const didNonces = this.nonces.get(did);
|
|
89
|
+
if (didNonces) {
|
|
90
|
+
didNonces.delete(messageType);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
switchDID(did) {
|
|
94
|
+
this.currentDID = did;
|
|
95
|
+
}
|
|
96
|
+
getAllNonces() {
|
|
97
|
+
const result = {};
|
|
98
|
+
this.nonces.forEach((didNonces, did) => {
|
|
99
|
+
result[did] = Object.fromEntries(didNonces.entries());
|
|
100
|
+
});
|
|
101
|
+
return result;
|
|
102
|
+
}
|
|
103
|
+
clearAll() {
|
|
104
|
+
this.nonces.clear();
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
exports.DIDScopedNonceManager = DIDScopedNonceManager;
|
|
108
|
+
function createNonceManager(did, initialNonces) {
|
|
109
|
+
if (did) {
|
|
110
|
+
return new DIDScopedNonceManager(did, initialNonces);
|
|
111
|
+
}
|
|
112
|
+
return new InMemoryNonceManager(initialNonces);
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=NonceManager.js.map
|