@oobe-protocol-labs/synapse-sap-sdk 0.12.9 → 0.13.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.
Files changed (60) hide show
  1. package/dist/cjs/modules/base.js +61 -0
  2. package/dist/cjs/modules/base.js.map +1 -1
  3. package/dist/cjs/modules/escrow-v2.js +153 -0
  4. package/dist/cjs/modules/escrow-v2.js.map +1 -1
  5. package/dist/cjs/modules/escrow.js +36 -0
  6. package/dist/cjs/modules/escrow.js.map +1 -1
  7. package/dist/cjs/modules/staking.js +35 -0
  8. package/dist/cjs/modules/staking.js.map +1 -1
  9. package/dist/cjs/modules/tools.js +26 -0
  10. package/dist/cjs/modules/tools.js.map +1 -1
  11. package/dist/cjs/modules/vault.js +17 -0
  12. package/dist/cjs/modules/vault.js.map +1 -1
  13. package/dist/cjs/utils/anchor-errors.js +453 -0
  14. package/dist/cjs/utils/anchor-errors.js.map +1 -0
  15. package/dist/cjs/utils/index.js +12 -1
  16. package/dist/cjs/utils/index.js.map +1 -1
  17. package/dist/cjs/utils/volume-curve.js +117 -0
  18. package/dist/cjs/utils/volume-curve.js.map +1 -0
  19. package/dist/esm/modules/base.js +61 -0
  20. package/dist/esm/modules/base.js.map +1 -1
  21. package/dist/esm/modules/escrow-v2.js +153 -0
  22. package/dist/esm/modules/escrow-v2.js.map +1 -1
  23. package/dist/esm/modules/escrow.js +36 -0
  24. package/dist/esm/modules/escrow.js.map +1 -1
  25. package/dist/esm/modules/staking.js +35 -0
  26. package/dist/esm/modules/staking.js.map +1 -1
  27. package/dist/esm/modules/tools.js +26 -0
  28. package/dist/esm/modules/tools.js.map +1 -1
  29. package/dist/esm/modules/vault.js +17 -0
  30. package/dist/esm/modules/vault.js.map +1 -1
  31. package/dist/esm/utils/anchor-errors.js +447 -0
  32. package/dist/esm/utils/anchor-errors.js.map +1 -0
  33. package/dist/esm/utils/index.js +4 -0
  34. package/dist/esm/utils/index.js.map +1 -1
  35. package/dist/esm/utils/volume-curve.js +114 -0
  36. package/dist/esm/utils/volume-curve.js.map +1 -0
  37. package/dist/types/modules/base.d.ts +35 -0
  38. package/dist/types/modules/base.d.ts.map +1 -1
  39. package/dist/types/modules/escrow-v2.d.ts +70 -1
  40. package/dist/types/modules/escrow-v2.d.ts.map +1 -1
  41. package/dist/types/modules/escrow.d.ts.map +1 -1
  42. package/dist/types/modules/staking.d.ts.map +1 -1
  43. package/dist/types/modules/tools.d.ts.map +1 -1
  44. package/dist/types/modules/vault.d.ts.map +1 -1
  45. package/dist/types/utils/anchor-errors.d.ts +61 -0
  46. package/dist/types/utils/anchor-errors.d.ts.map +1 -0
  47. package/dist/types/utils/index.d.ts +3 -0
  48. package/dist/types/utils/index.d.ts.map +1 -1
  49. package/dist/types/utils/volume-curve.d.ts +60 -0
  50. package/dist/types/utils/volume-curve.d.ts.map +1 -0
  51. package/package.json +1 -1
  52. package/src/modules/base.ts +89 -0
  53. package/src/modules/escrow-v2.ts +214 -1
  54. package/src/modules/escrow.ts +56 -0
  55. package/src/modules/staking.ts +66 -0
  56. package/src/modules/tools.ts +43 -0
  57. package/src/modules/vault.ts +25 -0
  58. package/src/utils/anchor-errors.ts +461 -0
  59. package/src/utils/index.ts +16 -0
  60. package/src/utils/volume-curve.ts +131 -0
@@ -0,0 +1,447 @@
1
+ /**
2
+ * @module utils/anchor-errors
3
+ * @description Full SAP program error table (147 entries, codes 6000-6146)
4
+ * plus decoder utilities. Mirrors `programs/synapse-agent-sap/src/errors.rs`.
5
+ *
6
+ * Use {@link decodeAnchorError} to extract a structured error from any
7
+ * thrown RPC / simulation error. Use {@link SAP_ERRORS} for direct lookups.
8
+ *
9
+ * @category Utils
10
+ * @since v0.13.0
11
+ */
12
+ export const SAP_ERRORS = Object.freeze({
13
+ 6000: { code: 6000, name: "NameTooLong", msg: "name>64" },
14
+ 6001: { code: 6001, name: "DescriptionTooLong", msg: "desc>256" },
15
+ 6002: { code: 6002, name: "UriTooLong", msg: "uri>256" },
16
+ 6003: { code: 6003, name: "TooManyCapabilities", msg: "caps>10" },
17
+ 6004: { code: 6004, name: "TooManyPricingTiers", msg: "tiers>5" },
18
+ 6005: { code: 6005, name: "TooManyProtocols", msg: "protos>5" },
19
+ 6006: { code: 6006, name: "TooManyPlugins", msg: "plugins>5" },
20
+ 6007: { code: 6007, name: "AlreadyActive", msg: "already active" },
21
+ 6008: { code: 6008, name: "AlreadyInactive", msg: "already inactive" },
22
+ 6009: { code: 6009, name: "InvalidFeedbackScore", msg: "score 0-1000" },
23
+ 6010: { code: 6010, name: "TagTooLong", msg: "tag>32" },
24
+ 6011: { code: 6011, name: "SelfReviewNotAllowed", msg: "self review" },
25
+ 6012: { code: 6012, name: "FeedbackAlreadyRevoked", msg: "already revoked" },
26
+ 6013: { code: 6013, name: "CapabilityIndexFull", msg: "cap idx full" },
27
+ 6014: { code: 6014, name: "ProtocolIndexFull", msg: "proto idx full" },
28
+ 6015: { code: 6015, name: "AgentNotInIndex", msg: "not in idx" },
29
+ 6016: { code: 6016, name: "InvalidCapabilityHash", msg: "cap hash" },
30
+ 6017: { code: 6017, name: "InvalidProtocolHash", msg: "proto hash" },
31
+ 6018: { code: 6018, name: "InvalidPluginType", msg: "bad plugin type" },
32
+ 6019: { code: 6019, name: "ChunkDataTooLarge", msg: "chunk>900" },
33
+ 6020: { code: 6020, name: "ContentTypeTooLong", msg: "ctype>max" },
34
+ 6021: { code: 6021, name: "IpfsCidTooLong", msg: "cid>max" },
35
+ 6022: { code: 6022, name: "EmptyName", msg: "empty name" },
36
+ 6023: { code: 6023, name: "ControlCharInName", msg: "ctrl char" },
37
+ 6024: { code: 6024, name: "EmptyDescription", msg: "empty desc" },
38
+ 6025: { code: 6025, name: "AgentIdTooLong", msg: "agentid>128" },
39
+ 6026: { code: 6026, name: "InvalidCapabilityFormat", msg: "cap format" },
40
+ 6027: { code: 6027, name: "DuplicateCapability", msg: "dup cap" },
41
+ 6028: { code: 6028, name: "EmptyTierId", msg: "empty tier" },
42
+ 6029: { code: 6029, name: "DuplicateTierId", msg: "dup tier" },
43
+ 6030: { code: 6030, name: "InvalidRateLimit", msg: "rate=0" },
44
+ 6031: { code: 6031, name: "SplRequiresTokenMint", msg: "spl needs mint" },
45
+ 6032: { code: 6032, name: "InvalidX402Endpoint", msg: "x402 https" },
46
+ 6033: { code: 6033, name: "InvalidVolumeCurve", msg: "curve order" },
47
+ 6034: { code: 6034, name: "TooManyVolumeCurvePoints", msg: "curve>5" },
48
+ 6035: { code: 6035, name: "MinPriceExceedsMax", msg: "min>max price" },
49
+ 6036: { code: 6036, name: "InvalidUptimePercent", msg: "uptime 0-100" },
50
+ 6037: { code: 6037, name: "SessionClosed", msg: "session closed" },
51
+ 6038: { code: 6038, name: "InvalidSequence", msg: "bad seq" },
52
+ 6039: { code: 6039, name: "InvalidFragmentIndex", msg: "frag idx" },
53
+ 6040: { code: 6040, name: "InscriptionTooLarge", msg: "data>750" },
54
+ 6041: { code: 6041, name: "EmptyInscription", msg: "empty data" },
55
+ 6042: { code: 6042, name: "InvalidTotalFragments", msg: "frags<1" },
56
+ 6043: { code: 6043, name: "EpochMismatch", msg: "epoch mismatch" },
57
+ 6044: { code: 6044, name: "VaultNotClosed", msg: "vault open" },
58
+ 6045: { code: 6045, name: "SessionNotClosed", msg: "session open" },
59
+ 6046: { code: 6046, name: "DelegateExpired", msg: "delegate expired" },
60
+ 6047: { code: 6047, name: "InvalidDelegate", msg: "bad delegate" },
61
+ 6048: { code: 6048, name: "ToolNameTooLong", msg: "tool>32" },
62
+ 6049: { code: 6049, name: "EmptyToolName", msg: "empty tool" },
63
+ 6050: { code: 6050, name: "InvalidToolNameHash", msg: "tool hash" },
64
+ 6051: { code: 6051, name: "InvalidToolHttpMethod", msg: "bad method" },
65
+ 6052: { code: 6052, name: "InvalidToolCategory", msg: "bad category" },
66
+ 6053: { code: 6053, name: "ToolAlreadyInactive", msg: "tool inactive" },
67
+ 6054: { code: 6054, name: "ToolAlreadyActive", msg: "tool active" },
68
+ 6055: { code: 6055, name: "InvalidSchemaHash", msg: "schema hash" },
69
+ 6056: { code: 6056, name: "InvalidSchemaType", msg: "schema type" },
70
+ 6057: { code: 6057, name: "InvalidCheckpointIndex", msg: "cp index" },
71
+ 6058: { code: 6058, name: "FeedbackNotRevoked", msg: "not revoked" },
72
+ 6059: { code: 6059, name: "IndexNotEmpty", msg: "idx not empty" },
73
+ 6060: { code: 6060, name: "SessionStillOpen", msg: "session open" },
74
+ 6061: { code: 6061, name: "NoFieldsToUpdate", msg: "no fields" },
75
+ 6062: { code: 6062, name: "InsufficientEscrowBalance", msg: "low balance" },
76
+ 6063: { code: 6063, name: "EscrowMaxCallsExceeded", msg: "max calls" },
77
+ 6064: { code: 6064, name: "EscrowEmpty", msg: "escrow empty" },
78
+ 6065: { code: 6065, name: "EscrowNotEmpty", msg: "escrow!=0" },
79
+ 6066: { code: 6066, name: "InvalidSettlementCalls", msg: "calls<1" },
80
+ 6067: { code: 6067, name: "AttestationTypeTooLong", msg: "atype>32" },
81
+ 6068: { code: 6068, name: "EmptyAttestationType", msg: "empty atype" },
82
+ 6069: { code: 6069, name: "SelfAttestationNotAllowed", msg: "self attest" },
83
+ 6070: { code: 6070, name: "AttestationAlreadyRevoked", msg: "already revoked" },
84
+ 6071: { code: 6071, name: "AttestationNotRevoked", msg: "not revoked" },
85
+ 6072: { code: 6072, name: "ToolCategoryIndexFull", msg: "cat idx full" },
86
+ 6073: { code: 6073, name: "ToolNotInCategoryIndex", msg: "not in cat" },
87
+ 6074: { code: 6074, name: "ToolCategoryMismatch", msg: "cat mismatch" },
88
+ 6075: { code: 6075, name: "ArithmeticOverflow", msg: "overflow" },
89
+ 6076: { code: 6076, name: "EscrowExpired", msg: "escrow expired" },
90
+ 6077: { code: 6077, name: "AgentInactive", msg: "agent inactive" },
91
+ 6078: { code: 6078, name: "AttestationExpired", msg: "attest expired" },
92
+ 6079: { code: 6079, name: "BufferFull", msg: "buf full" },
93
+ 6080: { code: 6080, name: "BufferDataTooLarge", msg: "buf>750" },
94
+ 6081: { code: 6081, name: "Unauthorized", msg: "unauthorized" },
95
+ 6082: { code: 6082, name: "InvalidSession", msg: "bad session" },
96
+ 6083: { code: 6083, name: "EmptyDigestHash", msg: "empty hash" },
97
+ 6084: { code: 6084, name: "LedgerDataTooLarge", msg: "ledger>750" },
98
+ 6085: { code: 6085, name: "LedgerRingEmpty", msg: "ring empty" },
99
+ 6086: { code: 6086, name: "BatchEmpty", msg: "batch empty" },
100
+ 6087: { code: 6087, name: "BatchTooLarge", msg: "batch>10" },
101
+ 6088: { code: 6088, name: "SplTokenRequired", msg: "spl accts" },
102
+ 6089: { code: 6089, name: "InvalidTokenAccount", msg: "bad token" },
103
+ 6090: { code: 6090, name: "InvalidTokenProgram", msg: "bad prog" },
104
+ 6091: { code: 6091, name: "InvalidSettlementSecurity", msg: "bad security" },
105
+ 6092: { code: 6092, name: "CoSignerRequired", msg: "cosigner" },
106
+ 6093: { code: 6093, name: "InvalidCoSigner", msg: "bad cosigner" },
107
+ 6094: { code: 6094, name: "InvalidArbiter", msg: "bad arbiter" },
108
+ 6095: { code: 6095, name: "ArbiterRequired", msg: "arbiter=0" },
109
+ 6096: { code: 6096, name: "EscrowNonceReused", msg: "nonce reused" },
110
+ 6097: { code: 6097, name: "SettlementNotPending", msg: "not pending" },
111
+ 6098: { code: 6098, name: "SettlementAlreadyFinalized", msg: "already final" },
112
+ 6099: { code: 6099, name: "DisputeWindowNotExpired", msg: "too early" },
113
+ 6100: { code: 6100, name: "DisputeWindowExpired", msg: "window closed" },
114
+ 6101: { code: 6101, name: "NotDepositor", msg: "not depositor" },
115
+ 6102: { code: 6102, name: "DisputeAlreadyFiled", msg: "dup dispute" },
116
+ 6103: { code: 6103, name: "DisputeStillOpen", msg: "dispute open" },
117
+ 6104: { code: 6104, name: "NotArbiter", msg: "not arbiter" },
118
+ 6105: { code: 6105, name: "InvalidDisputeOutcome", msg: "bad outcome" },
119
+ 6106: { code: 6106, name: "StakeBelowMinimum", msg: "stake<min" },
120
+ 6107: { code: 6107, name: "NoStakeAccount", msg: "no stake" },
121
+ 6108: { code: 6108, name: "UnstakeAlreadyPending", msg: "unstake pending" },
122
+ 6109: { code: 6109, name: "UnstakeCooldownNotMet", msg: "cooldown" },
123
+ 6110: { code: 6110, name: "NoUnstakePending", msg: "no unstake" },
124
+ 6111: { code: 6111, name: "SlashExceedsStake", msg: "slash>stake" },
125
+ 6112: { code: 6112, name: "SubscriptionAlreadyActive", msg: "sub active" },
126
+ 6113: { code: 6113, name: "SubscriptionCancelled", msg: "sub cancelled" },
127
+ 6114: { code: 6114, name: "NoIntervalDue", msg: "no due" },
128
+ 6115: { code: 6115, name: "SubscriptionInsufficientBalance", msg: "sub low bal" },
129
+ 6116: { code: 6116, name: "InvalidBillingInterval", msg: "bad interval" },
130
+ 6117: { code: 6117, name: "InvalidShardIndex", msg: "bad shard" },
131
+ 6118: { code: 6118, name: "IndexPageFull", msg: "page full" },
132
+ 6119: { code: 6119, name: "InvalidPageIndex", msg: "bad page" },
133
+ 6120: { code: 6120, name: "IndexPageNotEmpty", msg: "page≠empty" },
134
+ 6121: { code: 6121, name: "AlreadyMigrated", msg: "already v2" },
135
+ 6122: { code: 6122, name: "MigrationV1Only", msg: "v1 only" },
136
+ 6123: { code: 6123, name: "SettlementDisputed", msg: "disputed" },
137
+ 6124: { code: 6124, name: "InvalidAgentWallet", msg: "bad agent wallet" },
138
+ 6125: { code: 6125, name: "StakeAgentMismatch", msg: "stake agent mismatch" },
139
+ 6126: { code: 6126, name: "NotAuthority", msg: "not authority" },
140
+ 6127: { code: 6127, name: "UnstakeBelowRent", msg: "unstake below rent" },
141
+ 6128: { code: 6128, name: "InsufficientStake", msg: "insufficient stake" },
142
+ 6129: { code: 6129, name: "SelfReportDeprecated", msg: "SelfReport deprecated" },
143
+ 6130: { code: 6130, name: "ArbiterDeprecated", msg: "arbiter deprecated" },
144
+ 6131: { code: 6131, name: "InvalidBatchIndex", msg: "bad batch idx" },
145
+ 6132: { code: 6132, name: "InvalidPeriod", msg: "bad period" },
146
+ 6133: { code: 6133, name: "InvalidDisputeType", msg: "bad dispute type" },
147
+ 6134: { code: 6134, name: "ProofDeadlineExpired", msg: "proof expired" },
148
+ 6135: { code: 6135, name: "ProofDeadlineNotExpired", msg: "proof not expired" },
149
+ 6136: { code: 6136, name: "InvalidReceiptProof", msg: "bad receipt proof" },
150
+ 6137: { code: 6137, name: "SettlementReplay", msg: "settlement replay" },
151
+ 6138: { code: 6138, name: "PaymentTokenNotAllowed", msg: "token not allowed" },
152
+ 6139: { code: 6139, name: "AgentStakeRequired", msg: "agent stake required" },
153
+ 6140: { code: 6140, name: "DelegateExpiryInvalid", msg: "delegate expiry invalid" },
154
+ 6141: { code: 6141, name: "EscrowNotClosed", msg: "escrow not closed" },
155
+ 6142: { code: 6142, name: "VolumeCurveNotDescending", msg: "curve not descending" },
156
+ 6143: { code: 6143, name: "DuplicateServiceHash", msg: "dup service hash" },
157
+ 6144: { code: 6144, name: "StakeBelowCoverage", msg: "stake under coverage" },
158
+ 6145: { code: 6145, name: "StakeNotClosable", msg: "stake not closable" },
159
+ 6146: { code: 6146, name: "AgentStakeAccountMissing", msg: "agent stake account missing" },
160
+ });
161
+ export const SAP_ERROR_BY_NAME = Object.freeze({
162
+ NameTooLong: 6000,
163
+ DescriptionTooLong: 6001,
164
+ UriTooLong: 6002,
165
+ TooManyCapabilities: 6003,
166
+ TooManyPricingTiers: 6004,
167
+ TooManyProtocols: 6005,
168
+ TooManyPlugins: 6006,
169
+ AlreadyActive: 6007,
170
+ AlreadyInactive: 6008,
171
+ InvalidFeedbackScore: 6009,
172
+ TagTooLong: 6010,
173
+ SelfReviewNotAllowed: 6011,
174
+ FeedbackAlreadyRevoked: 6012,
175
+ CapabilityIndexFull: 6013,
176
+ ProtocolIndexFull: 6014,
177
+ AgentNotInIndex: 6015,
178
+ InvalidCapabilityHash: 6016,
179
+ InvalidProtocolHash: 6017,
180
+ InvalidPluginType: 6018,
181
+ ChunkDataTooLarge: 6019,
182
+ ContentTypeTooLong: 6020,
183
+ IpfsCidTooLong: 6021,
184
+ EmptyName: 6022,
185
+ ControlCharInName: 6023,
186
+ EmptyDescription: 6024,
187
+ AgentIdTooLong: 6025,
188
+ InvalidCapabilityFormat: 6026,
189
+ DuplicateCapability: 6027,
190
+ EmptyTierId: 6028,
191
+ DuplicateTierId: 6029,
192
+ InvalidRateLimit: 6030,
193
+ SplRequiresTokenMint: 6031,
194
+ InvalidX402Endpoint: 6032,
195
+ InvalidVolumeCurve: 6033,
196
+ TooManyVolumeCurvePoints: 6034,
197
+ MinPriceExceedsMax: 6035,
198
+ InvalidUptimePercent: 6036,
199
+ SessionClosed: 6037,
200
+ InvalidSequence: 6038,
201
+ InvalidFragmentIndex: 6039,
202
+ InscriptionTooLarge: 6040,
203
+ EmptyInscription: 6041,
204
+ InvalidTotalFragments: 6042,
205
+ EpochMismatch: 6043,
206
+ VaultNotClosed: 6044,
207
+ SessionNotClosed: 6045,
208
+ DelegateExpired: 6046,
209
+ InvalidDelegate: 6047,
210
+ ToolNameTooLong: 6048,
211
+ EmptyToolName: 6049,
212
+ InvalidToolNameHash: 6050,
213
+ InvalidToolHttpMethod: 6051,
214
+ InvalidToolCategory: 6052,
215
+ ToolAlreadyInactive: 6053,
216
+ ToolAlreadyActive: 6054,
217
+ InvalidSchemaHash: 6055,
218
+ InvalidSchemaType: 6056,
219
+ InvalidCheckpointIndex: 6057,
220
+ FeedbackNotRevoked: 6058,
221
+ IndexNotEmpty: 6059,
222
+ SessionStillOpen: 6060,
223
+ NoFieldsToUpdate: 6061,
224
+ InsufficientEscrowBalance: 6062,
225
+ EscrowMaxCallsExceeded: 6063,
226
+ EscrowEmpty: 6064,
227
+ EscrowNotEmpty: 6065,
228
+ InvalidSettlementCalls: 6066,
229
+ AttestationTypeTooLong: 6067,
230
+ EmptyAttestationType: 6068,
231
+ SelfAttestationNotAllowed: 6069,
232
+ AttestationAlreadyRevoked: 6070,
233
+ AttestationNotRevoked: 6071,
234
+ ToolCategoryIndexFull: 6072,
235
+ ToolNotInCategoryIndex: 6073,
236
+ ToolCategoryMismatch: 6074,
237
+ ArithmeticOverflow: 6075,
238
+ EscrowExpired: 6076,
239
+ AgentInactive: 6077,
240
+ AttestationExpired: 6078,
241
+ BufferFull: 6079,
242
+ BufferDataTooLarge: 6080,
243
+ Unauthorized: 6081,
244
+ InvalidSession: 6082,
245
+ EmptyDigestHash: 6083,
246
+ LedgerDataTooLarge: 6084,
247
+ LedgerRingEmpty: 6085,
248
+ BatchEmpty: 6086,
249
+ BatchTooLarge: 6087,
250
+ SplTokenRequired: 6088,
251
+ InvalidTokenAccount: 6089,
252
+ InvalidTokenProgram: 6090,
253
+ InvalidSettlementSecurity: 6091,
254
+ CoSignerRequired: 6092,
255
+ InvalidCoSigner: 6093,
256
+ InvalidArbiter: 6094,
257
+ ArbiterRequired: 6095,
258
+ EscrowNonceReused: 6096,
259
+ SettlementNotPending: 6097,
260
+ SettlementAlreadyFinalized: 6098,
261
+ DisputeWindowNotExpired: 6099,
262
+ DisputeWindowExpired: 6100,
263
+ NotDepositor: 6101,
264
+ DisputeAlreadyFiled: 6102,
265
+ DisputeStillOpen: 6103,
266
+ NotArbiter: 6104,
267
+ InvalidDisputeOutcome: 6105,
268
+ StakeBelowMinimum: 6106,
269
+ NoStakeAccount: 6107,
270
+ UnstakeAlreadyPending: 6108,
271
+ UnstakeCooldownNotMet: 6109,
272
+ NoUnstakePending: 6110,
273
+ SlashExceedsStake: 6111,
274
+ SubscriptionAlreadyActive: 6112,
275
+ SubscriptionCancelled: 6113,
276
+ NoIntervalDue: 6114,
277
+ SubscriptionInsufficientBalance: 6115,
278
+ InvalidBillingInterval: 6116,
279
+ InvalidShardIndex: 6117,
280
+ IndexPageFull: 6118,
281
+ InvalidPageIndex: 6119,
282
+ IndexPageNotEmpty: 6120,
283
+ AlreadyMigrated: 6121,
284
+ MigrationV1Only: 6122,
285
+ SettlementDisputed: 6123,
286
+ InvalidAgentWallet: 6124,
287
+ StakeAgentMismatch: 6125,
288
+ NotAuthority: 6126,
289
+ UnstakeBelowRent: 6127,
290
+ InsufficientStake: 6128,
291
+ SelfReportDeprecated: 6129,
292
+ ArbiterDeprecated: 6130,
293
+ InvalidBatchIndex: 6131,
294
+ InvalidPeriod: 6132,
295
+ InvalidDisputeType: 6133,
296
+ ProofDeadlineExpired: 6134,
297
+ ProofDeadlineNotExpired: 6135,
298
+ InvalidReceiptProof: 6136,
299
+ SettlementReplay: 6137,
300
+ PaymentTokenNotAllowed: 6138,
301
+ AgentStakeRequired: 6139,
302
+ DelegateExpiryInvalid: 6140,
303
+ EscrowNotClosed: 6141,
304
+ VolumeCurveNotDescending: 6142,
305
+ DuplicateServiceHash: 6143,
306
+ StakeBelowCoverage: 6144,
307
+ StakeNotClosable: 6145,
308
+ AgentStakeAccountMissing: 6146,
309
+ });
310
+ const FRIENDLY_OVERRIDES = Object.freeze({
311
+ Unauthorized: "Unauthorized — wallet does not match the on-chain authority for this PDA.",
312
+ AgentInactive: "Agent is inactive (deactivated). Reactivate before publishing tools or accepting escrows.",
313
+ AgentStakeRequired: "Agent stake account missing or below MIN_STAKE (0.1 SOL). Initialize stake first.",
314
+ StakeBelowMinimum: "Stake below minimum (0.1 SOL). Top up before requesting unstake or accepting escrows.",
315
+ StakeBelowCoverage: "Stake below coverage requirement for outstanding escrow. Increase stake or wait for escrows to settle.",
316
+ PaymentTokenNotAllowed: "Token mint not in allowlist. Use SOL (null) or USDC (mainnet/devnet).",
317
+ DelegateExpiryInvalid: "Delegate expiry exceeds MAX_DELEGATE_DURATION_SECS (365 days) from now.",
318
+ EscrowNotEmpty: "Escrow balance != 0. Withdraw or settle remaining funds before closing.",
319
+ EscrowEmpty: "Escrow balance is zero — cannot settle.",
320
+ InsufficientEscrowBalance: "Insufficient escrow balance for the requested settlement amount.",
321
+ ArithmeticOverflow: "Arithmetic overflow — likely an orphan PendingSettlement, mismatched amount, or unsigned subtraction. Run `escrowV2.diagnoseOrphanPending()` to inspect.",
322
+ EscrowNonceReused: "Escrow nonce already used by this depositor. Pick a fresh nonce.",
323
+ SettlementNotPending: "PendingSettlement is not in pending state (already finalized or never created).",
324
+ SettlementAlreadyFinalized: "PendingSettlement already finalized — cannot finalize twice.",
325
+ DisputeWindowNotExpired: "Dispute window still open. Wait until escrow.dispute_window_slots elapse before finalizing.",
326
+ DisputeWindowExpired: "Dispute window already closed. Cannot file dispute.",
327
+ CoSignerRequired: "Settlement security mode requires a co-signer. Pass the co-signer keypair.",
328
+ InvalidCoSigner: "Co-signer pubkey does not match the on-chain `escrow.co_signer`.",
329
+ InvalidSettlementSecurity: "Settlement security mode mismatch with on-chain escrow config.",
330
+ SettlementReplay: "Settlement receipt PDA already exists for this serviceHash/batchRoot. Replay blocked.",
331
+ DuplicateServiceHash: "Two settlements in the same batch share the same serviceHash. Make each call unique.",
332
+ BatchTooLarge: "Batch settle exceeds 10 entries. Split across multiple transactions.",
333
+ BatchEmpty: "Batch settle requires at least 1 settlement.",
334
+ InscriptionTooLarge: "Inscription chunk exceeds 750 bytes. Split into more fragments.",
335
+ InvalidSchemaHash: "Tool schema hash is empty / invalid. v0.2.0+ requires every tool to publish a JSON schema (or schema_hash).",
336
+ EmptyToolName: "Tool name cannot be empty.",
337
+ ToolNameTooLong: "Tool name exceeds 32 bytes.",
338
+ EscrowExpired: "Escrow expired (expiresAt passed). Create a new escrow.",
339
+ UnstakeCooldownNotMet: "Unstake cooldown not elapsed. Wait for the cooldown window before completing unstake.",
340
+ UnstakeBelowRent: "Resulting stake balance would fall below the rent-exempt minimum. Reduce unstake amount.",
341
+ });
342
+ /**
343
+ * @name decodeAnchorError
344
+ * @description Pull an Anchor / SAP error out of any caught value.
345
+ * Handles: AnchorError, raw RPC SimulateError, `0x...` hex codes,
346
+ * nested `error.errorCode.number`, and direct `code` numbers.
347
+ * @returns Structured {@link DecodedAnchorError} or `null` if not a SAP error.
348
+ * @since v0.13.0
349
+ */
350
+ export function decodeAnchorError(err) {
351
+ if (err == null || typeof err !== "object")
352
+ return null;
353
+ const code = extractCode(err);
354
+ if (code == null)
355
+ return null;
356
+ const entry = SAP_ERRORS[code];
357
+ if (!entry) {
358
+ return {
359
+ code,
360
+ name: "Unknown",
361
+ msg: `custom program error 0x${code.toString(16)}`,
362
+ friendly: `Unknown SAP error (code ${code}). Check IDL.`,
363
+ logs: extractLogs(err),
364
+ };
365
+ }
366
+ return {
367
+ code: entry.code,
368
+ name: entry.name,
369
+ msg: entry.msg,
370
+ friendly: FRIENDLY_OVERRIDES[entry.name] ?? `${entry.name}: ${entry.msg}`,
371
+ logs: extractLogs(err),
372
+ };
373
+ }
374
+ function extractCode(err) {
375
+ if (typeof err !== "object" || err == null)
376
+ return null;
377
+ const e = err;
378
+ if (typeof e.code === "number")
379
+ return e.code;
380
+ const nested = e.error;
381
+ if (nested && typeof nested === "object") {
382
+ const errorCode = nested.errorCode;
383
+ if (errorCode && typeof errorCode === "object") {
384
+ const num = errorCode.number;
385
+ if (typeof num === "number")
386
+ return num;
387
+ }
388
+ }
389
+ const msg = err.message;
390
+ if (typeof msg === "string") {
391
+ const hex = msg.match(/custom program error:\s*0x([0-9a-fA-F]+)/);
392
+ if (hex?.[1])
393
+ return parseInt(hex[1], 16);
394
+ const dec = msg.match(/Error Number:\s*(\d+)/);
395
+ if (dec?.[1])
396
+ return parseInt(dec[1], 10);
397
+ }
398
+ return null;
399
+ }
400
+ function extractLogs(err) {
401
+ if (typeof err !== "object" || err == null)
402
+ return undefined;
403
+ const logs = err.logs;
404
+ if (Array.isArray(logs))
405
+ return logs;
406
+ const nested = err.simulationResponse;
407
+ if (nested && typeof nested === "object") {
408
+ const inner = nested.logs;
409
+ if (Array.isArray(inner))
410
+ return inner;
411
+ }
412
+ return undefined;
413
+ }
414
+ /**
415
+ * @name SapPreflightError
416
+ * @description Thrown by SDK preflights when an on-chain check is guaranteed
417
+ * to fail. Carries the predicted error code/name so callers can branch
418
+ * without parsing strings.
419
+ * @since v0.13.0
420
+ */
421
+ export class SapPreflightError extends Error {
422
+ predictedCode;
423
+ predictedName;
424
+ hint;
425
+ preflight = true;
426
+ constructor(message, predictedCode, predictedName, hint) {
427
+ super(message);
428
+ this.predictedCode = predictedCode;
429
+ this.predictedName = predictedName;
430
+ this.hint = hint;
431
+ this.name = "SapPreflightError";
432
+ }
433
+ }
434
+ /**
435
+ * @name throwPredicted
436
+ * @description Helper for SDK preflights. Throws a {@link SapPreflightError}
437
+ * carrying the on-chain error name + friendly message.
438
+ * @since v0.13.0
439
+ */
440
+ export function throwPredicted(name, hint) {
441
+ const code = SAP_ERROR_BY_NAME[name] ?? -1;
442
+ const entry = code >= 0 ? SAP_ERRORS[code] : undefined;
443
+ const friendly = FRIENDLY_OVERRIDES[name] ?? `${String(name)}: ${entry?.msg ?? ""}`;
444
+ const full = hint ? `${friendly} (${hint})` : friendly;
445
+ throw new SapPreflightError(full, code, name, hint);
446
+ }
447
+ //# sourceMappingURL=anchor-errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anchor-errors.js","sourceRoot":"","sources":["../../../src/utils/anchor-errors.ts"],"names":[],"mappings":"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"}
@@ -27,4 +27,8 @@ export { buildPriorityFeeIxs, buildRpcOptions, FAST_SETTLE_OPTIONS, FAST_BATCH_S
27
27
  export { validateEscrowState, attachSplAccounts, toAccountMetas, MissingEscrowAtaError, } from "./escrow-validation";
28
28
  export { SapMerchantValidator, parseX402Headers, } from "./merchant-validator";
29
29
  export { getX402DirectPayments } from "./x402-direct";
30
+ // ── v0.13.0 Full SAP error table + preflight helpers ─
31
+ export { SAP_ERRORS, SAP_ERROR_BY_NAME, decodeAnchorError, SapPreflightError, throwPredicted, } from "./anchor-errors";
32
+ // ── v0.13.0 Volume-curve mirror for client-side amount preview ──
33
+ export { calculateSettleAmount } from "./volume-curve";
30
34
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEnE,uDAAuD;AACvD,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,cAAc,GACf,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,gBAAgB,EAChB,0BAA0B,EAC1B,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,SAAS,EACT,iBAAiB,EACjB,oBAAoB,EACpB,OAAO,EACP,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,eAAe,EACf,8BAA8B,EAC9B,uBAAuB,EACvB,6BAA6B,EAC7B,yBAAyB,EACzB,0BAA0B,EAC1B,yBAAyB,EACzB,oBAAoB,EACpB,eAAe,GAChB,MAAM,WAAW,CAAC;AAEnB,uDAAuD;AACvD,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,yBAAyB,EACzB,2BAA2B,EAC3B,4BAA4B,EAC5B,kCAAkC,EAClC,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AAMxB,wDAAwD;AACxD,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,EACd,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAM7B,OAAO,EACL,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAM9B,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEnE,uDAAuD;AACvD,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,cAAc,GACf,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,gBAAgB,EAChB,0BAA0B,EAC1B,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,SAAS,EACT,iBAAiB,EACjB,oBAAoB,EACpB,OAAO,EACP,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,eAAe,EACf,8BAA8B,EAC9B,uBAAuB,EACvB,6BAA6B,EAC7B,yBAAyB,EACzB,0BAA0B,EAC1B,yBAAyB,EACzB,oBAAoB,EACpB,eAAe,GAChB,MAAM,WAAW,CAAC;AAEnB,uDAAuD;AACvD,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,yBAAyB,EACzB,2BAA2B,EAC3B,4BAA4B,EAC5B,kCAAkC,EAClC,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AAMxB,wDAAwD;AACxD,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,EACd,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAM7B,OAAO,EACL,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAM9B,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAOtD,yDAAyD;AACzD,OAAO,EACL,UAAU,EACV,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,GACf,MAAM,iBAAiB,CAAC;AAMzB,oEAAoE;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,114 @@
1
+ /**
2
+ * @module volume-curve
3
+ * @description Client-side mirror of the on-chain `calculate_settle_amount`
4
+ * function from `programs/synapse-agent-sap/src/instructions/escrow_v2.rs`.
5
+ *
6
+ * Used by {@link EscrowV2Module.settle} to pre-compute the settlement
7
+ * `amount` so it can chain `createPendingSettlement` in the same transaction
8
+ * as `settleCallsV2` (DisputeWindow flow). Keeping the math in one place
9
+ * here ensures the SDK stays byte-for-byte aligned with the program; if the
10
+ * on-chain curve algorithm ever changes, this file is the single source of
11
+ * truth on the client.
12
+ *
13
+ * @category Utilities
14
+ * @since v0.13.0
15
+ * @packageDocumentation
16
+ */
17
+ import { BN } from "@coral-xyz/anchor";
18
+ const U64_MAX = new BN("18446744073709551615");
19
+ function checkedMul(a, b) {
20
+ const r = a.mul(b);
21
+ if (r.gt(U64_MAX)) {
22
+ throw new Error(`volume-curve: u64 overflow on multiply (${a.toString()} * ${b.toString()})`);
23
+ }
24
+ return r;
25
+ }
26
+ function checkedAdd(a, b) {
27
+ const r = a.add(b);
28
+ if (r.gt(U64_MAX)) {
29
+ throw new Error(`volume-curve: u64 overflow on add (${a.toString()} + ${b.toString()})`);
30
+ }
31
+ return r;
32
+ }
33
+ /**
34
+ * @function calculateSettleAmount
35
+ * @description Compute the lamport (or token base-unit) amount the on-chain
36
+ * `settle_calls_v2` handler will charge for `calls` calls, given the escrow's
37
+ * `pricePerCall`, `volumeCurve`, and the current settled+pending counter.
38
+ *
39
+ * Mirrors the exact algorithm of `calculate_settle_amount` in
40
+ * `escrow_v2.rs` (v0.7+):
41
+ *
42
+ * ```rust
43
+ * if curve.is_empty() { calls * base_price } else { walk-the-curve }
44
+ * ```
45
+ *
46
+ * Walks the curve from `cursor = totalCallsBefore` and at each cursor
47
+ * position picks the breakpoint price whose `afterCalls` threshold the
48
+ * cursor has passed. Calls are charged at the active price up to the next
49
+ * threshold, then the cursor advances and the loop repeats until all
50
+ * `calls` are accounted for.
51
+ *
52
+ * @param basePrice - Escrow's `pricePerCall` (BN, u64 lamports/base-units).
53
+ * @param curve - The escrow's `volumeCurve` array (may be empty).
54
+ * @param totalCallsBefore - `escrow.totalCallsSettled + escrow.pendingCalls`
55
+ * AT THE MOMENT `settleCallsV2` runs on-chain.
56
+ * @param calls - Number of calls being settled in this batch.
57
+ * @returns The amount the on-chain handler will compute (BN, u64).
58
+ *
59
+ * @example
60
+ * ```ts
61
+ * import { calculateSettleAmount } from "@oobe-protocol-labs/synapse-sap-sdk";
62
+ *
63
+ * const amount = calculateSettleAmount(
64
+ * escrow.pricePerCall,
65
+ * escrow.volumeCurve,
66
+ * escrow.totalCallsSettled.add(escrow.pendingCalls),
67
+ * new BN(5),
68
+ * );
69
+ * ```
70
+ *
71
+ * @since v0.13.0
72
+ */
73
+ export function calculateSettleAmount(basePrice, curve, totalCallsBefore, calls) {
74
+ if (calls.isZero())
75
+ return new BN(0);
76
+ if (!curve || curve.length === 0) {
77
+ return checkedMul(calls, basePrice);
78
+ }
79
+ let amount = new BN(0);
80
+ let remaining = calls.clone();
81
+ let cursor = totalCallsBefore.clone();
82
+ while (remaining.gtn(0)) {
83
+ let currentPrice = basePrice;
84
+ let nextThreshold = null;
85
+ for (const bp of curve) {
86
+ const threshold = new BN(bp.afterCalls);
87
+ if (cursor.gte(threshold)) {
88
+ currentPrice = bp.pricePerCall;
89
+ }
90
+ else {
91
+ nextThreshold = threshold;
92
+ break;
93
+ }
94
+ }
95
+ let callsAtPrice;
96
+ if (nextThreshold) {
97
+ const room = nextThreshold.sub(cursor);
98
+ callsAtPrice = BN.min(remaining, room.isNeg() ? new BN(0) : room);
99
+ if (callsAtPrice.isZero()) {
100
+ // Defensive: shouldn't happen because cursor < nextThreshold by
101
+ // the `else` branch above, but guard anyway.
102
+ callsAtPrice = remaining;
103
+ }
104
+ }
105
+ else {
106
+ callsAtPrice = remaining;
107
+ }
108
+ amount = checkedAdd(amount, checkedMul(callsAtPrice, currentPrice));
109
+ remaining = remaining.sub(callsAtPrice);
110
+ cursor = cursor.add(callsAtPrice);
111
+ }
112
+ return amount;
113
+ }
114
+ //# sourceMappingURL=volume-curve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"volume-curve.js","sourceRoot":"","sources":["../../../src/utils/volume-curve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAGvC,MAAM,OAAO,GAAG,IAAI,EAAE,CAAC,sBAAsB,CAAC,CAAC;AAE/C,SAAS,UAAU,CAAC,CAAK,EAAE,CAAK;IAC9B,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACnB,IAAI,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CACb,2CAA2C,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,QAAQ,EAAE,GAAG,CAC7E,CAAC;IACJ,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,UAAU,CAAC,CAAK,EAAE,CAAK;IAC9B,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACnB,IAAI,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CACb,sCAAsC,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,QAAQ,EAAE,GAAG,CACxE,CAAC;IACJ,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,MAAM,UAAU,qBAAqB,CACnC,SAAa,EACb,KAA8B,EAC9B,gBAAoB,EACpB,KAAS;IAET,IAAI,KAAK,CAAC,MAAM,EAAE;QAAE,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACrC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,MAAM,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACvB,IAAI,SAAS,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;IAC9B,IAAI,MAAM,GAAG,gBAAgB,CAAC,KAAK,EAAE,CAAC;IAEtC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACxB,IAAI,YAAY,GAAG,SAAS,CAAC;QAC7B,IAAI,aAAa,GAAc,IAAI,CAAC;QAEpC,KAAK,MAAM,EAAE,IAAI,KAAK,EAAE,CAAC;YACvB,MAAM,SAAS,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;YACxC,IAAI,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC1B,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC;YACjC,CAAC;iBAAM,CAAC;gBACN,aAAa,GAAG,SAAS,CAAC;gBAC1B,MAAM;YACR,CAAC;QACH,CAAC;QAED,IAAI,YAAgB,CAAC;QACrB,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACvC,YAAY,GAAG,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAClE,IAAI,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC1B,gEAAgE;gBAChE,6CAA6C;gBAC7C,YAAY,GAAG,SAAS,CAAC;YAC3B,CAAC;QACH,CAAC;aAAM,CAAC;YACN,YAAY,GAAG,SAAS,CAAC;QAC3B,CAAC;QAED,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC;QACpE,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACxC,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}