@intent-engine/core 0.1.40 → 0.1.42
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/generated/client/accounts/claimBoard.d.ts +4 -0
- package/dist/generated/client/accounts/claimBoard.js +5 -1
- package/dist/generated/client/accounts/claimBoard.js.map +1 -1
- package/dist/generated/client/accounts/index.d.ts +1 -0
- package/dist/generated/client/accounts/index.js +1 -0
- package/dist/generated/client/accounts/index.js.map +1 -1
- package/dist/generated/client/accounts/standby.d.ts +40 -0
- package/dist/generated/client/accounts/standby.js +67 -0
- package/dist/generated/client/accounts/standby.js.map +1 -0
- package/dist/generated/client/errors/intentEngine.d.ts +11 -1
- package/dist/generated/client/errors/intentEngine.js +15 -0
- package/dist/generated/client/errors/intentEngine.js.map +1 -1
- package/dist/generated/client/events/index.d.ts +2 -0
- package/dist/generated/client/events/index.js +2 -0
- package/dist/generated/client/events/index.js.map +1 -1
- package/dist/generated/client/events/lineLeft.d.ts +30 -0
- package/dist/generated/client/events/lineLeft.js +42 -0
- package/dist/generated/client/events/lineLeft.js.map +1 -0
- package/dist/generated/client/events/stoodBy.d.ts +32 -0
- package/dist/generated/client/events/stoodBy.js +46 -0
- package/dist/generated/client/events/stoodBy.js.map +1 -0
- package/dist/generated/client/instructions/advance.d.ts +79 -0
- package/dist/generated/client/instructions/advance.js +167 -0
- package/dist/generated/client/instructions/advance.js.map +1 -0
- package/dist/generated/client/instructions/dropClaim.d.ts +29 -9
- package/dist/generated/client/instructions/dropClaim.js +41 -2
- package/dist/generated/client/instructions/dropClaim.js.map +1 -1
- package/dist/generated/client/instructions/index.d.ts +3 -0
- package/dist/generated/client/instructions/index.js +3 -0
- package/dist/generated/client/instructions/index.js.map +1 -1
- package/dist/generated/client/instructions/leave.d.ts +68 -0
- package/dist/generated/client/instructions/leave.js +142 -0
- package/dist/generated/client/instructions/leave.js.map +1 -0
- package/dist/generated/client/instructions/standBy.d.ts +72 -0
- package/dist/generated/client/instructions/standBy.js +163 -0
- package/dist/generated/client/instructions/standBy.js.map +1 -0
- package/dist/generated/client/pdas/entry.d.ts +15 -0
- package/dist/generated/client/pdas/entry.js +20 -0
- package/dist/generated/client/pdas/entry.js.map +1 -0
- package/dist/generated/client/pdas/index.d.ts +1 -0
- package/dist/generated/client/pdas/index.js +1 -0
- package/dist/generated/client/pdas/index.js.map +1 -1
- package/dist/generated/client/programs/intentEngine.d.ts +121 -98
- package/dist/generated/client/programs/intentEngine.js +154 -98
- package/dist/generated/client/programs/intentEngine.js.map +1 -1
- package/dist/src/claims.d.ts +32 -2
- package/dist/src/claims.js +54 -2
- package/dist/src/claims.js.map +1 -1
- package/dist/src/describe.js +1 -1
- package/dist/src/describe.js.map +1 -1
- package/dist/src/errors.d.ts +1 -1
- package/dist/src/errors.js +3 -0
- package/dist/src/errors.js.map +1 -1
- package/dist/src/events.d.ts +3 -1
- package/dist/src/events.js +3 -1
- package/dist/src/events.js.map +1 -1
- package/dist/src/fee.d.ts +13 -0
- package/dist/src/fee.js +28 -0
- package/dist/src/fee.js.map +1 -1
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/memo.d.ts +0 -9
- package/dist/src/memo.js +0 -31
- package/dist/src/memo.js.map +1 -1
- package/dist/src/sealed-delivery.d.ts +25 -0
- package/dist/src/sealed-delivery.js +163 -0
- package/dist/src/sealed-delivery.js.map +1 -0
- package/dist/src/sealed.d.ts +2 -0
- package/dist/src/sealed.js +8 -23
- package/dist/src/sealed.js.map +1 -1
- package/generated/idl.json +394 -0
- package/package.json +1 -1
package/dist/src/claims.js
CHANGED
|
@@ -1,10 +1,19 @@
|
|
|
1
|
-
import { findBoardPda, getClaimJobInstructionAsync, getDropClaimInstructionAsync, getOpenClaimsInstructionAsync, getSettleClaimsInstructionAsync, } from "../generated/client/index.js";
|
|
1
|
+
import { findBoardPda, findEntryPda, getAdvanceInstructionAsync, getClaimJobInstructionAsync, getDropClaimInstructionAsync, getLeaveInstructionAsync, getOpenClaimsInstructionAsync, getSettleClaimsInstructionAsync, getStandByInstructionAsync, } from "../generated/client/index.js";
|
|
2
2
|
import { events } from "./builder-accounts.js";
|
|
3
3
|
import { IntentCoreError } from "./errors.js";
|
|
4
4
|
export const CLAIMS_OPEN = 1;
|
|
5
5
|
export const MAX_CLAIM_SECS = 7 * 24 * 60 * 60;
|
|
6
6
|
export const MAX_CLAIM_STAKE = 100000000000n;
|
|
7
|
+
export const MAX_LINE_ENTRIES = 4;
|
|
8
|
+
export const MAX_LINE_SEQ = 0xffff_fffe;
|
|
7
9
|
const NONE = "11111111111111111111111111111111";
|
|
10
|
+
export function lineLength(line) {
|
|
11
|
+
return Math.max(0, (line.tail ?? 0) - (line.head ?? 0));
|
|
12
|
+
}
|
|
13
|
+
export function lineSeqs(line, max = MAX_LINE_ENTRIES) {
|
|
14
|
+
const head = line.head ?? 0;
|
|
15
|
+
return Array.from({ length: Math.min(lineLength(line), max) }, (_, i) => head + i);
|
|
16
|
+
}
|
|
8
17
|
export function claimSlot(board, now) {
|
|
9
18
|
if (board.worker === NONE)
|
|
10
19
|
return { state: "free" };
|
|
@@ -14,10 +23,22 @@ export function checkClaimant(board, claimant, now) {
|
|
|
14
23
|
const slot = claimSlot(board, now);
|
|
15
24
|
if (slot.state === "held")
|
|
16
25
|
throw new IntentCoreError("ClaimHeld");
|
|
26
|
+
if (lineLength(board) > 0)
|
|
27
|
+
throw new IntentCoreError("LineWaiting");
|
|
17
28
|
const dropped = board.droppedBy ?? NONE;
|
|
18
29
|
if (slot.state === "free" && dropped !== NONE && dropped === claimant && now < board.until)
|
|
19
30
|
throw new IntentCoreError("ClaimCooldown");
|
|
20
31
|
}
|
|
32
|
+
export function checkStandBy(board, now) {
|
|
33
|
+
if (claimSlot(board, now).state !== "held" && lineLength(board) === 0)
|
|
34
|
+
throw new IntentCoreError("JobNotHeld");
|
|
35
|
+
}
|
|
36
|
+
export function checkAdvance(board, now) {
|
|
37
|
+
if (claimSlot(board, now).state === "held")
|
|
38
|
+
throw new IntentCoreError("ClaimHeld");
|
|
39
|
+
if (lineLength(board) === 0)
|
|
40
|
+
throw new IntentCoreError("LineEmpty");
|
|
41
|
+
}
|
|
21
42
|
export function checkClaimTerms(maxSecs, stake) {
|
|
22
43
|
if (!Number.isInteger(maxSecs) || maxSecs < 1 || maxSecs > MAX_CLAIM_SECS || stake < 0n || stake > MAX_CLAIM_STAKE) {
|
|
23
44
|
throw new IntentCoreError("ClaimTerms");
|
|
@@ -69,8 +90,39 @@ export async function buildOpenClaims(input) {
|
|
|
69
90
|
export async function buildClaimJob(input) {
|
|
70
91
|
return getClaimJobInstructionAsync({ ...input, ...(await events()) });
|
|
71
92
|
}
|
|
93
|
+
export async function standbyAddress(intent, seq) {
|
|
94
|
+
return (await findEntryPda({ intent, seq }))[0];
|
|
95
|
+
}
|
|
96
|
+
function entryAccounts(entries) {
|
|
97
|
+
if (entries.length > MAX_LINE_ENTRIES)
|
|
98
|
+
throw new IntentCoreError("InvalidParams");
|
|
99
|
+
const [entry0, entry1, entry2, entry3] = entries;
|
|
100
|
+
return {
|
|
101
|
+
...(entry0 === undefined ? {} : { entry0 }),
|
|
102
|
+
...(entry1 === undefined ? {} : { entry1 }),
|
|
103
|
+
...(entry2 === undefined ? {} : { entry2 }),
|
|
104
|
+
...(entry3 === undefined ? {} : { entry3 }),
|
|
105
|
+
};
|
|
106
|
+
}
|
|
72
107
|
export async function buildDropClaim(input) {
|
|
73
|
-
|
|
108
|
+
const { entries = [], nextWorker, ...rest } = input;
|
|
109
|
+
return getDropClaimInstructionAsync({ ...rest, ...(nextWorker === undefined ? {} : { nextWorker }), ...entryAccounts(entries), ...(await events()) });
|
|
110
|
+
}
|
|
111
|
+
export async function buildStandBy(input) {
|
|
112
|
+
const entry = await standbyAddress(input.intent, input.seq);
|
|
113
|
+
return getStandByInstructionAsync({ worker: input.worker, intent: input.intent, entry, secs: input.secs, ...(await events()) });
|
|
114
|
+
}
|
|
115
|
+
export async function buildAdvance(input) {
|
|
116
|
+
return getAdvanceInstructionAsync({
|
|
117
|
+
intent: input.intent,
|
|
118
|
+
owner: input.owner,
|
|
119
|
+
...(input.nextWorker === undefined ? {} : { nextWorker: input.nextWorker }),
|
|
120
|
+
...entryAccounts(input.entries),
|
|
121
|
+
...(await events()),
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
export async function buildLeave(input) {
|
|
125
|
+
return getLeaveInstructionAsync({ ...input, ...(await events()) });
|
|
74
126
|
}
|
|
75
127
|
export async function buildSettleClaims(input) {
|
|
76
128
|
return getSettleClaimsInstructionAsync({
|
package/dist/src/claims.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claims.js","sourceRoot":"","sources":["../../src/claims.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,EACZ,2BAA2B,EAC3B,4BAA4B,EAC5B,6BAA6B,EAC7B,+BAA+B,
|
|
1
|
+
{"version":3,"file":"claims.js","sourceRoot":"","sources":["../../src/claims.ts"],"names":[],"mappings":"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"}
|
package/dist/src/describe.js
CHANGED
|
@@ -87,7 +87,7 @@ export function describeTerms(f, o) {
|
|
|
87
87
|
]
|
|
88
88
|
: []),
|
|
89
89
|
ATTESTED_PROTOCOL_FEE,
|
|
90
|
-
`Output token: ${tokenOf(f.outputMint, o.outputName)},
|
|
90
|
+
`Output token: ${tokenOf(f.outputMint, o.outputName)}, a label only; the release pays out the sold token, never this one`,
|
|
91
91
|
];
|
|
92
92
|
}
|
|
93
93
|
}
|
package/dist/src/describe.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"describe.js","sourceRoot":"","sources":["../../src/describe.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"describe.js","sourceRoot":"","sources":["../../src/describe.ts"],"names":[],"mappings":"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"}
|
package/dist/src/errors.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const CORE_ERROR_CODES: readonly ["Overflow", "DivideByZero", "Truncated", "NonCanonical", "UnknownKind", "UnknownStatus", "InvalidParams", "AmountMismatch", "InsufficientOutput", "InvalidTransition", "IntentExpired", "NotExpired", "NonceUsed", "NonceOutOfWindow", "NonceRegression", "SigProgram", "SigHeader", "SigPubkey", "SigMessage", "KindMismatch", "ResultOutOfBounds", "FlashEndProgram", "FlashEndDiscriminator", "FlashEndIntent", "ExtTooLong", "ExtMalformed", "ExtUnknown", "FlagsUnknown", "PartnerFeeTooHigh", "MandateInvalid", "MandateExpired", "MandateKind", "MandateTtl", "MandateCap", "MandateBudget", "MandateCount", "MandatePrice", "CommitteeInvalid", "CommitteeSigners", "ClaimTerms", "ClaimHeld", "ProfileInvalid", "ClaimCooldown"];
|
|
1
|
+
export declare const CORE_ERROR_CODES: readonly ["Overflow", "DivideByZero", "Truncated", "NonCanonical", "UnknownKind", "UnknownStatus", "InvalidParams", "AmountMismatch", "InsufficientOutput", "InvalidTransition", "IntentExpired", "NotExpired", "NonceUsed", "NonceOutOfWindow", "NonceRegression", "SigProgram", "SigHeader", "SigPubkey", "SigMessage", "KindMismatch", "ResultOutOfBounds", "FlashEndProgram", "FlashEndDiscriminator", "FlashEndIntent", "ExtTooLong", "ExtMalformed", "ExtUnknown", "FlagsUnknown", "PartnerFeeTooHigh", "MandateInvalid", "MandateExpired", "MandateKind", "MandateTtl", "MandateCap", "MandateBudget", "MandateCount", "MandatePrice", "CommitteeInvalid", "CommitteeSigners", "ClaimTerms", "ClaimHeld", "ProfileInvalid", "ClaimCooldown", "LineWaiting", "LineEmpty", "JobNotHeld"];
|
|
2
2
|
export type CoreErrorCode = (typeof CORE_ERROR_CODES)[number];
|
|
3
3
|
export declare class IntentCoreError extends Error {
|
|
4
4
|
readonly code: CoreErrorCode;
|
package/dist/src/errors.js
CHANGED
package/dist/src/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,UAAU;IACV,cAAc;IACd,WAAW;IACX,cAAc;IACd,aAAa;IACb,eAAe;IACf,eAAe;IACf,gBAAgB;IAChB,oBAAoB;IACpB,mBAAmB;IACnB,eAAe;IACf,YAAY;IACZ,WAAW;IACX,kBAAkB;IAClB,iBAAiB;IACjB,YAAY;IACZ,WAAW;IACX,WAAW;IACX,YAAY;IACZ,cAAc;IACd,mBAAmB;IACnB,iBAAiB;IACjB,uBAAuB;IACvB,gBAAgB;IAChB,YAAY;IACZ,cAAc;IACd,YAAY;IACZ,cAAc;IACd,mBAAmB;IACnB,gBAAgB;IAChB,gBAAgB;IAChB,aAAa;IACb,YAAY;IACZ,YAAY;IACZ,eAAe;IACf,cAAc;IACd,cAAc;IACd,kBAAkB;IAClB,kBAAkB;IAClB,YAAY;IACZ,WAAW;IACX,gBAAgB;IAChB,eAAe;
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,UAAU;IACV,cAAc;IACd,WAAW;IACX,cAAc;IACd,aAAa;IACb,eAAe;IACf,eAAe;IACf,gBAAgB;IAChB,oBAAoB;IACpB,mBAAmB;IACnB,eAAe;IACf,YAAY;IACZ,WAAW;IACX,kBAAkB;IAClB,iBAAiB;IACjB,YAAY;IACZ,WAAW;IACX,WAAW;IACX,YAAY;IACZ,cAAc;IACd,mBAAmB;IACnB,iBAAiB;IACjB,uBAAuB;IACvB,gBAAgB;IAChB,YAAY;IACZ,cAAc;IACd,YAAY;IACZ,cAAc;IACd,mBAAmB;IACnB,gBAAgB;IAChB,gBAAgB;IAChB,aAAa;IACb,YAAY;IACZ,YAAY;IACZ,eAAe;IACf,cAAc;IACd,cAAc;IACd,kBAAkB;IAClB,kBAAkB;IAClB,YAAY;IACZ,WAAW;IACX,gBAAgB;IAChB,eAAe;IACf,aAAa;IACb,WAAW;IACX,YAAY;CACJ,CAAC;AAIX,MAAM,OAAO,eAAgB,SAAQ,KAAK;IAC/B,IAAI,CAAgB;IAE7B,YAAY,IAAmB;QAC7B,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF"}
|
package/dist/src/events.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IntentEngineEvent, parseAgentPaidEvent, parseAdminAcceptedEvent, parseAdminProposedEvent, parseCapsRequiredSetEvent, parseClaimDroppedEvent, parseClaimsClosedEvent, parseClaimsOpenedEvent, parseJobClaimedEvent, parseProfileClosedEvent, parseProfileSetEvent, parseStakeMovedEvent, parseCommitteeAttestedEvent, parseCommitteeCreatedEvent, parseConfigInitializedEvent, parseConfigUpdatedEvent, parseEconomicsUpdatedEvent, parseEpochAdvancedEvent, parseFeeWithheldEvent, parseFillBegunEvent, parseFillEndedEvent, parseIntentAttestedEvent, parseIntentCancelledEvent, parseIntentClosedEvent, parseIntentCreatedEvent, parseIntentExpiredEvent, parseIntentFilledEvent, parseIntentSplitEvent, parseMandateClosedEvent, parseMandateCreatedEvent, parseMandateUsedEvent, parseMintCapSetEvent, parseNonceAdvancedEvent, parsePauseLoweredEvent, parsePauseRaisedEvent, parseRelayerPaidEvent, parseUserInitializedEvent } from "../generated/client/index.js";
|
|
1
|
+
import { IntentEngineEvent, parseAgentPaidEvent, parseAdminAcceptedEvent, parseAdminProposedEvent, parseCapsRequiredSetEvent, parseClaimDroppedEvent, parseClaimsClosedEvent, parseClaimsOpenedEvent, parseJobClaimedEvent, parseLineLeftEvent, parseProfileClosedEvent, parseProfileSetEvent, parseStakeMovedEvent, parseStoodByEvent, parseCommitteeAttestedEvent, parseCommitteeCreatedEvent, parseConfigInitializedEvent, parseConfigUpdatedEvent, parseEconomicsUpdatedEvent, parseEpochAdvancedEvent, parseFeeWithheldEvent, parseFillBegunEvent, parseFillEndedEvent, parseIntentAttestedEvent, parseIntentCancelledEvent, parseIntentClosedEvent, parseIntentCreatedEvent, parseIntentExpiredEvent, parseIntentFilledEvent, parseIntentSplitEvent, parseMandateClosedEvent, parseMandateCreatedEvent, parseMandateUsedEvent, parseMintCapSetEvent, parseNonceAdvancedEvent, parsePauseLoweredEvent, parsePauseRaisedEvent, parseRelayerPaidEvent, parseUserInitializedEvent } from "../generated/client/index.js";
|
|
2
2
|
export declare const EVENT_IX_TAG: Uint8Array<ArrayBuffer>;
|
|
3
3
|
type EventName = (typeof IntentEngineEvent)[IntentEngineEvent];
|
|
4
4
|
declare const PARSERS: {
|
|
@@ -10,9 +10,11 @@ declare const PARSERS: {
|
|
|
10
10
|
ClaimsClosed: typeof parseClaimsClosedEvent;
|
|
11
11
|
ClaimsOpened: typeof parseClaimsOpenedEvent;
|
|
12
12
|
JobClaimed: typeof parseJobClaimedEvent;
|
|
13
|
+
LineLeft: typeof parseLineLeftEvent;
|
|
13
14
|
ProfileClosed: typeof parseProfileClosedEvent;
|
|
14
15
|
ProfileSet: typeof parseProfileSetEvent;
|
|
15
16
|
StakeMoved: typeof parseStakeMovedEvent;
|
|
17
|
+
StoodBy: typeof parseStoodByEvent;
|
|
16
18
|
CommitteeAttested: typeof parseCommitteeAttestedEvent;
|
|
17
19
|
CommitteeCreated: typeof parseCommitteeCreatedEvent;
|
|
18
20
|
ConfigInitialized: typeof parseConfigInitializedEvent;
|
package/dist/src/events.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IntentEngineEvent, parseAgentPaidEvent, identifyIntentEngineEvent, parseAdminAcceptedEvent, parseAdminProposedEvent, parseCapsRequiredSetEvent, parseClaimDroppedEvent, parseClaimsClosedEvent, parseClaimsOpenedEvent, parseJobClaimedEvent, parseProfileClosedEvent, parseProfileSetEvent, parseStakeMovedEvent, parseCommitteeAttestedEvent, parseCommitteeCreatedEvent, parseConfigInitializedEvent, parseConfigUpdatedEvent, parseEconomicsUpdatedEvent, parseEpochAdvancedEvent, parseFeeWithheldEvent, parseFillBegunEvent, parseFillEndedEvent, parseIntentAttestedEvent, parseIntentCancelledEvent, parseIntentClosedEvent, parseIntentCreatedEvent, parseIntentExpiredEvent, parseIntentFilledEvent, parseIntentSplitEvent, parseMandateClosedEvent, parseMandateCreatedEvent, parseMandateUsedEvent, parseMintCapSetEvent, parseNonceAdvancedEvent, parsePauseLoweredEvent, parsePauseRaisedEvent, parseRelayerPaidEvent, parseUserInitializedEvent, } from "../generated/client/index.js";
|
|
1
|
+
import { IntentEngineEvent, parseAgentPaidEvent, identifyIntentEngineEvent, parseAdminAcceptedEvent, parseAdminProposedEvent, parseCapsRequiredSetEvent, parseClaimDroppedEvent, parseClaimsClosedEvent, parseClaimsOpenedEvent, parseJobClaimedEvent, parseLineLeftEvent, parseProfileClosedEvent, parseProfileSetEvent, parseStakeMovedEvent, parseStoodByEvent, parseCommitteeAttestedEvent, parseCommitteeCreatedEvent, parseConfigInitializedEvent, parseConfigUpdatedEvent, parseEconomicsUpdatedEvent, parseEpochAdvancedEvent, parseFeeWithheldEvent, parseFillBegunEvent, parseFillEndedEvent, parseIntentAttestedEvent, parseIntentCancelledEvent, parseIntentClosedEvent, parseIntentCreatedEvent, parseIntentExpiredEvent, parseIntentFilledEvent, parseIntentSplitEvent, parseMandateClosedEvent, parseMandateCreatedEvent, parseMandateUsedEvent, parseMintCapSetEvent, parseNonceAdvancedEvent, parsePauseLoweredEvent, parsePauseRaisedEvent, parseRelayerPaidEvent, parseUserInitializedEvent, } from "../generated/client/index.js";
|
|
2
2
|
export const EVENT_IX_TAG = new Uint8Array([0xe4, 0x45, 0xa5, 0x2e, 0x51, 0xcb, 0x9a, 0x1d]);
|
|
3
3
|
const PARSERS = {
|
|
4
4
|
AdminAccepted: parseAdminAcceptedEvent,
|
|
@@ -9,9 +9,11 @@ const PARSERS = {
|
|
|
9
9
|
ClaimsClosed: parseClaimsClosedEvent,
|
|
10
10
|
ClaimsOpened: parseClaimsOpenedEvent,
|
|
11
11
|
JobClaimed: parseJobClaimedEvent,
|
|
12
|
+
LineLeft: parseLineLeftEvent,
|
|
12
13
|
ProfileClosed: parseProfileClosedEvent,
|
|
13
14
|
ProfileSet: parseProfileSetEvent,
|
|
14
15
|
StakeMoved: parseStakeMovedEvent,
|
|
16
|
+
StoodBy: parseStoodByEvent,
|
|
15
17
|
CommitteeAttested: parseCommitteeAttestedEvent,
|
|
16
18
|
CommitteeCreated: parseCommitteeCreatedEvent,
|
|
17
19
|
ConfigInitialized: parseConfigInitializedEvent,
|
package/dist/src/events.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/events.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/events.ts"],"names":[],"mappings":"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"}
|
package/dist/src/fee.d.ts
CHANGED
|
@@ -11,3 +11,16 @@ export type FeeShares = {
|
|
|
11
11
|
net: bigint;
|
|
12
12
|
};
|
|
13
13
|
export declare function splitFees(amount: bigint, feeBps: number, partnerBps: number, cutBps: number): FeeShares;
|
|
14
|
+
export type ReleaseTerms = {
|
|
15
|
+
amount: bigint;
|
|
16
|
+
judgeFee: bigint;
|
|
17
|
+
feeBps: number;
|
|
18
|
+
partnerBps: number;
|
|
19
|
+
cutBps: number;
|
|
20
|
+
};
|
|
21
|
+
export declare function releaseSettles(terms: ReleaseTerms): boolean;
|
|
22
|
+
export type SettleBounds = {
|
|
23
|
+
leastAmount?: bigint;
|
|
24
|
+
mostJudgeFee?: bigint;
|
|
25
|
+
};
|
|
26
|
+
export declare function settleBounds(terms: ReleaseTerms): SettleBounds;
|
package/dist/src/fee.js
CHANGED
|
@@ -32,4 +32,32 @@ export function splitFees(amount, feeBps, partnerBps, cutBps) {
|
|
|
32
32
|
}
|
|
33
33
|
return { protocol, partner: gross - cut, net: amount - fee - gross };
|
|
34
34
|
}
|
|
35
|
+
function feesFit(rest, terms) {
|
|
36
|
+
try {
|
|
37
|
+
splitFees(rest, terms.feeBps, terms.partnerBps, terms.cutBps);
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
if (error instanceof IntentCoreError) {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
throw error;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
export function releaseSettles(terms) {
|
|
48
|
+
return terms.amount > terms.judgeFee && feesFit(terms.amount - terms.judgeFee, terms);
|
|
49
|
+
}
|
|
50
|
+
export function settleBounds(terms) {
|
|
51
|
+
for (let rest = 1n; rest <= BPS_DENOMINATOR; rest += 1n) {
|
|
52
|
+
if (!feesFit(rest, terms)) {
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
const leastAmount = terms.judgeFee + rest;
|
|
56
|
+
return {
|
|
57
|
+
...(leastAmount <= U64_MAX ? { leastAmount } : {}),
|
|
58
|
+
...(terms.amount >= rest ? { mostJudgeFee: terms.amount - rest } : {}),
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
return {};
|
|
62
|
+
}
|
|
35
63
|
//# sourceMappingURL=fee.js.map
|
package/dist/src/fee.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fee.js","sourceRoot":"","sources":["../../src/fee.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEvE,MAAM,CAAC,MAAM,eAAe,GAAG,MAAO,CAAC;AAEvC,MAAM,UAAU,QAAQ,CAAC,GAAW,EAAE,IAAI,GAAG,KAAK;IAChD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC;QACvE,MAAM,IAAI,UAAU,CAAC,GAAG,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,yBAAyB,eAAe,EAAE,CAAC,CAAC;IACzF,CAAC;IACD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;AACrB,CAAC;AAID,MAAM,UAAU,QAAQ,CAAC,MAAc,EAAE,MAAc;IACrD,QAAQ,CAAC,MAAM,CAAC,CAAC;IACjB,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,eAAe,CAAC,CAAC;IAC7E,IAAI,GAAG,GAAG,MAAM,EAAE,CAAC;QACjB,MAAM,IAAI,eAAe,CAAC,eAAe,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,CAAC;AACpC,CAAC;AAID,MAAM,UAAU,SAAS,CAAC,MAAc,EAAE,MAAc,EAAE,UAAkB,EAAE,MAAc;IAC1F,QAAQ,CAAC,MAAM,CAAC,CAAC;IACjB,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,eAAe,CAAC,CAAC;IAC7E,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,EAAE,eAAe,CAAC,CAAC;IACvF,MAAM,GAAG,GAAG,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC,EAAE,eAAe,CAAC,CAAC;IACrF,IAAI,GAAG,GAAG,KAAK,EAAE,CAAC;QAChB,MAAM,IAAI,eAAe,CAAC,eAAe,CAAC,CAAC;IAC7C,CAAC;IACD,MAAM,QAAQ,GAAG,GAAG,GAAG,GAAG,CAAC;IAC3B,IAAI,QAAQ,GAAG,OAAO,EAAE,CAAC;QACvB,MAAM,IAAI,eAAe,CAAC,UAAU,CAAC,CAAC;IACxC,CAAC;IACD,IAAI,GAAG,GAAG,KAAK,GAAG,MAAM,EAAE,CAAC;QACzB,MAAM,IAAI,eAAe,CAAC,eAAe,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,GAAG,GAAG,KAAK,EAAE,CAAC;AACvE,CAAC"}
|
|
1
|
+
{"version":3,"file":"fee.js","sourceRoot":"","sources":["../../src/fee.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.d.ts
CHANGED
package/dist/src/index.js
CHANGED
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC"}
|
package/dist/src/memo.d.ts
CHANGED
|
@@ -1,19 +1,12 @@
|
|
|
1
1
|
import { type Address } from "@solana/kit";
|
|
2
2
|
export declare const SPEC_MEMO_PREFIX = "solive-spec:";
|
|
3
|
-
export declare const DELIVERY_MEMO_PREFIX = "solive-delivery:";
|
|
4
3
|
export declare const RELEASE_MEMO_PREFIX = "delivery sha256:";
|
|
5
4
|
export declare const FEEDBACK_MEMO_PREFIX = "solive-feedback:";
|
|
6
5
|
export declare const MAX_FEEDBACK_SCORE = 100;
|
|
7
6
|
export declare const MAX_MEMO_URL = 200;
|
|
8
|
-
export declare const MAX_DELIVERY_MEMO: number;
|
|
9
7
|
export type SpecMemo = {
|
|
10
8
|
url: string;
|
|
11
9
|
};
|
|
12
|
-
export type DeliveryMemo = {
|
|
13
|
-
intent: Address;
|
|
14
|
-
sha256: string;
|
|
15
|
-
url: string;
|
|
16
|
-
};
|
|
17
10
|
export type FeedbackMemo = {
|
|
18
11
|
intent: Address;
|
|
19
12
|
score: number;
|
|
@@ -25,8 +18,6 @@ export declare function isLegacyMemoUrl(url: string): boolean;
|
|
|
25
18
|
export declare function isSha256Hex(text: string): boolean;
|
|
26
19
|
export declare function specMemo(url: string): string;
|
|
27
20
|
export declare function parseSpecMemo(text: string): SpecMemo | null;
|
|
28
|
-
export declare function deliveryMemo({ intent, sha256, url }: DeliveryMemo): string;
|
|
29
|
-
export declare function parseDeliveryMemo(text: string): DeliveryMemo | null;
|
|
30
21
|
export declare function releaseMemo(sha256: string): string;
|
|
31
22
|
export declare function parseReleaseMemo(text: string): string | null;
|
|
32
23
|
export declare function feedbackMemo({ intent, score, note }: FeedbackMemo): string;
|
package/dist/src/memo.js
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
import { isAddress } from "@solana/kit";
|
|
2
2
|
import { PRODUCT_SLUG } from "../generated/identity.js";
|
|
3
3
|
export const SPEC_MEMO_PREFIX = `${PRODUCT_SLUG}-spec:`;
|
|
4
|
-
export const DELIVERY_MEMO_PREFIX = `${PRODUCT_SLUG}-delivery:`;
|
|
5
4
|
export const RELEASE_MEMO_PREFIX = "delivery sha256:";
|
|
6
5
|
export const FEEDBACK_MEMO_PREFIX = `${PRODUCT_SLUG}-feedback:`;
|
|
7
6
|
export const MAX_FEEDBACK_SCORE = 100;
|
|
8
7
|
export const MAX_MEMO_URL = 200;
|
|
9
|
-
export const MAX_DELIVERY_MEMO = DELIVERY_MEMO_PREFIX.length + 44 + 1 + 64 + 1 + MAX_MEMO_URL;
|
|
10
8
|
export const MEMO_URL_RULE = `an https url of at most ${MAX_MEMO_URL} printable characters without spaces or backslashes, or http on localhost, 127.0.0.1 or [::1], in canonical form: lowercase scheme and host, no default port, no . or .. path segments, a / path before any ? or #, and characters percent-encoded as new URL() would`;
|
|
11
9
|
const PRINTABLE = /^[!-~]+$/;
|
|
12
10
|
const SHA256 = /^[0-9a-f]{64}$/;
|
|
@@ -54,35 +52,6 @@ export function parseSpecMemo(text) {
|
|
|
54
52
|
const url = text.slice(SPEC_MEMO_PREFIX.length);
|
|
55
53
|
return isLegacyMemoUrl(url) ? { url } : null;
|
|
56
54
|
}
|
|
57
|
-
export function deliveryMemo({ intent, sha256, url }) {
|
|
58
|
-
if (!isAddress(intent)) {
|
|
59
|
-
throw new RangeError("a delivery names its intent by a base58 address");
|
|
60
|
-
}
|
|
61
|
-
if (!isSha256Hex(sha256)) {
|
|
62
|
-
throw new RangeError("a delivery's sha256 must be 64 lowercase hex digits");
|
|
63
|
-
}
|
|
64
|
-
if (!isMemoUrl(url)) {
|
|
65
|
-
throw new RangeError(`a delivery url must be ${MEMO_URL_RULE}`);
|
|
66
|
-
}
|
|
67
|
-
return `${DELIVERY_MEMO_PREFIX}${intent}:${sha256}:${url}`;
|
|
68
|
-
}
|
|
69
|
-
export function parseDeliveryMemo(text) {
|
|
70
|
-
if (text.length > MAX_DELIVERY_MEMO || !text.startsWith(DELIVERY_MEMO_PREFIX)) {
|
|
71
|
-
return null;
|
|
72
|
-
}
|
|
73
|
-
const rest = text.slice(DELIVERY_MEMO_PREFIX.length);
|
|
74
|
-
const split = rest.indexOf(":");
|
|
75
|
-
if (split < 0) {
|
|
76
|
-
return null;
|
|
77
|
-
}
|
|
78
|
-
const intent = rest.slice(0, split);
|
|
79
|
-
const sha256 = rest.slice(split + 1, split + 65);
|
|
80
|
-
const url = rest.slice(split + 66);
|
|
81
|
-
if (rest[split + 65] !== ":" || !isAddress(intent) || !isSha256Hex(sha256) || !isLegacyMemoUrl(url)) {
|
|
82
|
-
return null;
|
|
83
|
-
}
|
|
84
|
-
return { intent, sha256, url };
|
|
85
|
-
}
|
|
86
55
|
export function releaseMemo(sha256) {
|
|
87
56
|
if (!isSha256Hex(sha256)) {
|
|
88
57
|
throw new RangeError("a release records a sha256 of 64 lowercase hex digits");
|
package/dist/src/memo.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memo.js","sourceRoot":"","sources":["../../src/memo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,SAAS,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,YAAY,QAAQ,CAAC;AACxD,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"memo.js","sourceRoot":"","sources":["../../src/memo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,SAAS,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,YAAY,QAAQ,CAAC;AACxD,MAAM,CAAC,MAAM,mBAAmB,GAAG,kBAAkB,CAAC;AACtD,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,YAAY,YAAY,CAAC;AAChE,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAC;AACtC,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,CAAC;AAMhC,MAAM,CAAC,MAAM,aAAa,GAAG,2BAA2B,YAAY,uQAAuQ,CAAC;AAE5U,MAAM,SAAS,GAAG,UAAU,CAAC;AAC7B,MAAM,MAAM,GAAG,gBAAgB,CAAC;AAChC,MAAM,WAAW,GAAwB,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;AAEtF,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5B,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,KAAK,GAAG,GAAG,GAAG,IAAI,MAAM,CAAC,QAAQ,KAAK,GAAG,IAAI,MAAM,CAAC,MAAM,KAAK,EAAE,IAAI,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;IACtH,OAAO,MAAM,CAAC,IAAI,KAAK,GAAG,IAAI,UAAU,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,IAAI,GAAG,CAAC,MAAM,GAAG,YAAY,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5E,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,MAAW,CAAC;IAChB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,MAAM,CAAC,QAAQ,KAAK,EAAE,IAAI,MAAM,CAAC,QAAQ,KAAK,EAAE,IAAI,MAAM,CAAC,QAAQ,KAAK,EAAE,EAAE,CAAC;QAC/E,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC;IACtC,CAAC;IACD,OAAO,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,IAAI,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACtG,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,GAAW;IAClC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,UAAU,CAAC,sBAAsB,aAAa,EAAE,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,GAAG,gBAAgB,GAAG,GAAG,EAAE,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,IAAI,IAAI,CAAC,MAAM,GAAG,gBAAgB,CAAC,MAAM,GAAG,YAAY,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAC/F,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAChD,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,MAAc;IACxC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,UAAU,CAAC,uDAAuD,CAAC,CAAC;IAChF,CAAC;IACD,OAAO,GAAG,mBAAmB,GAAG,MAAM,EAAE,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACtD,OAAO,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AACrF,CAAC;AAED,MAAM,KAAK,GAAG,uBAAuB,CAAC;AAEtC,MAAM,UAAU,YAAY,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAgB;IAChE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,UAAU,CAAC,+CAA+C,CAAC,CAAC;IACxE,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,kBAAkB,EAAE,CAAC;QACxE,MAAM,IAAI,UAAU,CAAC,gDAAgD,kBAAkB,EAAE,CAAC,CAAC;IAC7F,CAAC;IACD,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,UAAU,CAAC,sEAAsE,CAAC,CAAC;IAC/F,CAAC;IACD,OAAO,GAAG,oBAAoB,GAAG,MAAM,IAAI,KAAK,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;AAC5F,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAAE,CAAC;QAC3C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,CAAC,MAAM,GAAG,EAAE,EAAE,KAAK,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACpG,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,kBAAkB,EAAE,CAAC;QACtG,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AACnF,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type Address } from "@solana/kit";
|
|
2
|
+
export declare const DELIVERY_V2_MEMO_PREFIX = "solive-delivery2:";
|
|
3
|
+
export declare const COMMITMENT_TAG = "solive-delivery-v2";
|
|
4
|
+
export declare const SEALED_URL_VERSION = 1;
|
|
5
|
+
export declare const MAX_DELIVERY_V2_MEMO = 960;
|
|
6
|
+
export declare const MAX_SEALED_URL_RECIPIENTS = 8;
|
|
7
|
+
export type DeliveryMemoV2 = {
|
|
8
|
+
intent: Address;
|
|
9
|
+
commitment: string;
|
|
10
|
+
blob: string;
|
|
11
|
+
};
|
|
12
|
+
export type Commitment = {
|
|
13
|
+
intent: Address;
|
|
14
|
+
worker: Address;
|
|
15
|
+
sha256: string;
|
|
16
|
+
};
|
|
17
|
+
export declare function maxSealedUrl(recipients: number): number;
|
|
18
|
+
export declare const sealedUrlTooLong: (length: number, recipients: number) => string;
|
|
19
|
+
export declare function commitmentPreimage({ intent, worker, sha256 }: Commitment): Uint8Array<ArrayBuffer>;
|
|
20
|
+
export declare function deliveryCommitment(commitment: Commitment): Promise<string>;
|
|
21
|
+
export declare function sealUrl(url: string, recipients: readonly Address[], intent: Address): Promise<string>;
|
|
22
|
+
export declare function sealedUrlRecipients(blob: string): number | null;
|
|
23
|
+
export declare function openUrl(blob: string, keypair: Uint8Array, intent: Address): Promise<string | null>;
|
|
24
|
+
export declare function deliveryMemoV2({ intent, commitment, blob }: DeliveryMemoV2): string;
|
|
25
|
+
export declare function parseDeliveryMemoV2(text: string): DeliveryMemoV2 | null;
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { getAddressDecoder, getAddressEncoder, isAddress } from "@solana/kit";
|
|
2
|
+
import { PRODUCT_SLUG } from "../generated/identity.js";
|
|
3
|
+
import { MAX_COMMITTEE_MEMBERS } from "./committee.js";
|
|
4
|
+
import { isMemoUrl, isSha256Hex, MAX_MEMO_URL, MEMO_URL_RULE } from "./memo.js";
|
|
5
|
+
import { SealedError, wrapKey, x25519PublicOf, x25519SecretOf } from "./sealed.js";
|
|
6
|
+
export const DELIVERY_V2_MEMO_PREFIX = `${PRODUCT_SLUG}-delivery2:`;
|
|
7
|
+
export const COMMITMENT_TAG = `${PRODUCT_SLUG}-delivery-v2`;
|
|
8
|
+
export const SEALED_URL_VERSION = 1;
|
|
9
|
+
export const MAX_DELIVERY_V2_MEMO = 960;
|
|
10
|
+
export const MAX_SEALED_URL_RECIPIENTS = MAX_COMMITTEE_MEMBERS;
|
|
11
|
+
const INFO = new TextEncoder().encode(`${PRODUCT_SLUG}-sealed-url-v1`);
|
|
12
|
+
const KEY_BYTES = 32;
|
|
13
|
+
const IV_BYTES = 12;
|
|
14
|
+
const TAG_BYTES = 16;
|
|
15
|
+
const WRAPPED_BYTES = KEY_BYTES + TAG_BYTES;
|
|
16
|
+
const EPK_BYTES = 32;
|
|
17
|
+
const HEAD_BYTES = 2;
|
|
18
|
+
const BASE64 = /^[A-Za-z0-9+/]+={0,2}$/;
|
|
19
|
+
const ADDRESS_CHARS = 44;
|
|
20
|
+
const FIXED_MEMO = DELIVERY_V2_MEMO_PREFIX.length + ADDRESS_CHARS + 1 + 64 + 1;
|
|
21
|
+
const ZERO_IV = new Uint8Array(IV_BYTES);
|
|
22
|
+
const toBase64 = (bytes) => btoa(String.fromCharCode(...bytes));
|
|
23
|
+
const fromBase64 = (text) => Uint8Array.from(atob(text), (c) => c.charCodeAt(0));
|
|
24
|
+
const base64Length = (bytes) => 4 * Math.ceil(bytes / 3);
|
|
25
|
+
const sealedBytes = (recipients, url) => HEAD_BYTES + EPK_BYTES + recipients * WRAPPED_BYTES + IV_BYTES + url + TAG_BYTES;
|
|
26
|
+
export function maxSealedUrl(recipients) {
|
|
27
|
+
let url = MAX_MEMO_URL;
|
|
28
|
+
while (url > 0 && FIXED_MEMO + base64Length(sealedBytes(recipients, url)) > MAX_DELIVERY_V2_MEMO) {
|
|
29
|
+
url -= 1;
|
|
30
|
+
}
|
|
31
|
+
return url;
|
|
32
|
+
}
|
|
33
|
+
export const sealedUrlTooLong = (length, recipients) => `the work url has ${length} characters, but sealed to ${recipients} ${recipients === 1 ? "wallet" : "wallets"} it may have at most ${maxSealedUrl(recipients)}, so that the delivery memo stays within ${MAX_DELIVERY_V2_MEMO} bytes and fits one transaction; nothing was sent`;
|
|
34
|
+
export function commitmentPreimage({ intent, worker, sha256 }) {
|
|
35
|
+
if (!isSha256Hex(sha256)) {
|
|
36
|
+
throw new RangeError("a commitment binds a sha256 of 64 lowercase hex digits");
|
|
37
|
+
}
|
|
38
|
+
const encoder = getAddressEncoder();
|
|
39
|
+
return Uint8Array.from([
|
|
40
|
+
...new TextEncoder().encode(COMMITMENT_TAG),
|
|
41
|
+
...encoder.encode(intent),
|
|
42
|
+
...encoder.encode(worker),
|
|
43
|
+
...Array.from({ length: 32 }, (_, i) => Number.parseInt(sha256.slice(2 * i, 2 * i + 2), 16)),
|
|
44
|
+
]);
|
|
45
|
+
}
|
|
46
|
+
const hex = (bytes) => Array.from(bytes, (b) => b.toString(16).padStart(2, "0")).join("");
|
|
47
|
+
export async function deliveryCommitment(commitment) {
|
|
48
|
+
return hex(new Uint8Array(await crypto.subtle.digest("SHA-256", commitmentPreimage(commitment))));
|
|
49
|
+
}
|
|
50
|
+
const random = (length) => crypto.getRandomValues(new Uint8Array(new ArrayBuffer(length)));
|
|
51
|
+
const aad = (intent) => Uint8Array.from([...INFO, ...getAddressEncoder().encode(intent)]);
|
|
52
|
+
async function sharedWith(peer, mine) {
|
|
53
|
+
const key = await crypto.subtle.importKey("raw", peer.slice(), { name: "X25519" }, false, []);
|
|
54
|
+
return new Uint8Array(await crypto.subtle.deriveBits({ name: "X25519", public: key }, mine, 256));
|
|
55
|
+
}
|
|
56
|
+
export async function sealUrl(url, recipients, intent) {
|
|
57
|
+
const wallets = [...new Set(recipients)];
|
|
58
|
+
if (wallets.length === 0 || wallets.length > MAX_SEALED_URL_RECIPIENTS) {
|
|
59
|
+
throw new SealedError(`seal a work url to between 1 and ${MAX_SEALED_URL_RECIPIENTS} wallets`);
|
|
60
|
+
}
|
|
61
|
+
if (!isMemoUrl(url)) {
|
|
62
|
+
throw new RangeError(`a delivery url must be ${MEMO_URL_RULE}`);
|
|
63
|
+
}
|
|
64
|
+
if (url.length > maxSealedUrl(wallets.length)) {
|
|
65
|
+
throw new RangeError(sealedUrlTooLong(url.length, wallets.length));
|
|
66
|
+
}
|
|
67
|
+
const contentKey = random(KEY_BYTES);
|
|
68
|
+
const iv = random(IV_BYTES);
|
|
69
|
+
const ephemeral = (await crypto.subtle.generateKey({ name: "X25519" }, true, ["deriveBits"]));
|
|
70
|
+
const epk = new Uint8Array(await crypto.subtle.exportKey("raw", ephemeral.publicKey));
|
|
71
|
+
const wrapped = [];
|
|
72
|
+
for (const wallet of wallets) {
|
|
73
|
+
const theirs = x25519PublicOf(wallet);
|
|
74
|
+
const wrapping = await wrapKey(await sharedWith(theirs, ephemeral.privateKey), Uint8Array.from([...epk, ...theirs]), INFO);
|
|
75
|
+
wrapped.push(...new Uint8Array(await crypto.subtle.encrypt({ name: "AES-GCM", iv: ZERO_IV, additionalData: INFO }, wrapping, contentKey)));
|
|
76
|
+
}
|
|
77
|
+
const content = await crypto.subtle.importKey("raw", contentKey, "AES-GCM", false, ["encrypt"]);
|
|
78
|
+
const data = new Uint8Array(await crypto.subtle.encrypt({ name: "AES-GCM", iv, additionalData: aad(intent) }, content, new TextEncoder().encode(url)));
|
|
79
|
+
return toBase64(Uint8Array.from([SEALED_URL_VERSION, wallets.length, ...epk, ...wrapped, ...iv, ...data]));
|
|
80
|
+
}
|
|
81
|
+
export function sealedUrlRecipients(blob) {
|
|
82
|
+
if (!BASE64.test(blob)) {
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
let bytes;
|
|
86
|
+
try {
|
|
87
|
+
bytes = fromBase64(blob);
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
const count = bytes[1] ?? 0;
|
|
93
|
+
if (toBase64(bytes) !== blob || bytes[0] !== SEALED_URL_VERSION || count < 1 || count > MAX_SEALED_URL_RECIPIENTS) {
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
return bytes.length > sealedBytes(count, 0) ? count : null;
|
|
97
|
+
}
|
|
98
|
+
export async function openUrl(blob, keypair, intent) {
|
|
99
|
+
const count = sealedUrlRecipients(blob);
|
|
100
|
+
if (count === null) {
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
const bytes = fromBase64(blob);
|
|
104
|
+
const epk = bytes.slice(HEAD_BYTES, HEAD_BYTES + EPK_BYTES);
|
|
105
|
+
const mine = await x25519SecretOf(keypair);
|
|
106
|
+
const ours = x25519PublicOf(getAddressDecoder().decode(keypair.slice(32)));
|
|
107
|
+
let wrapping;
|
|
108
|
+
try {
|
|
109
|
+
wrapping = await wrapKey(await sharedWith(epk, mine), Uint8Array.from([...epk, ...ours]), INFO);
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
114
|
+
const keysAt = HEAD_BYTES + EPK_BYTES;
|
|
115
|
+
const ivAt = keysAt + count * WRAPPED_BYTES;
|
|
116
|
+
for (let at = 0; at < count; at += 1) {
|
|
117
|
+
let contentKey;
|
|
118
|
+
try {
|
|
119
|
+
const start = keysAt + at * WRAPPED_BYTES;
|
|
120
|
+
contentKey = new Uint8Array(await crypto.subtle.decrypt({ name: "AES-GCM", iv: ZERO_IV, additionalData: INFO }, wrapping, bytes.slice(start, start + WRAPPED_BYTES)));
|
|
121
|
+
}
|
|
122
|
+
catch {
|
|
123
|
+
continue;
|
|
124
|
+
}
|
|
125
|
+
try {
|
|
126
|
+
const content = await crypto.subtle.importKey("raw", contentKey, "AES-GCM", false, ["decrypt"]);
|
|
127
|
+
const plain = await crypto.subtle.decrypt({ name: "AES-GCM", iv: bytes.slice(ivAt, ivAt + IV_BYTES), additionalData: aad(intent) }, content, bytes.slice(ivAt + IV_BYTES));
|
|
128
|
+
const url = new TextDecoder("utf-8", { fatal: true }).decode(plain);
|
|
129
|
+
return isMemoUrl(url) ? url : null;
|
|
130
|
+
}
|
|
131
|
+
catch {
|
|
132
|
+
return null;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
return null;
|
|
136
|
+
}
|
|
137
|
+
export function deliveryMemoV2({ intent, commitment, blob }) {
|
|
138
|
+
if (!isAddress(intent)) {
|
|
139
|
+
throw new RangeError("a delivery names its intent by a base58 address");
|
|
140
|
+
}
|
|
141
|
+
if (!isSha256Hex(commitment)) {
|
|
142
|
+
throw new RangeError("a delivery's commitment must be 64 lowercase hex digits");
|
|
143
|
+
}
|
|
144
|
+
if (sealedUrlRecipients(blob) === null) {
|
|
145
|
+
throw new RangeError("a delivery's sealed url must be the base64 a sealUrl call returns");
|
|
146
|
+
}
|
|
147
|
+
const memo = `${DELIVERY_V2_MEMO_PREFIX}${intent}:${commitment}:${blob}`;
|
|
148
|
+
if (memo.length > MAX_DELIVERY_V2_MEMO) {
|
|
149
|
+
throw new RangeError(`a delivery memo may have at most ${MAX_DELIVERY_V2_MEMO} bytes, so that it fits one transaction`);
|
|
150
|
+
}
|
|
151
|
+
return memo;
|
|
152
|
+
}
|
|
153
|
+
export function parseDeliveryMemoV2(text) {
|
|
154
|
+
if (text.length > MAX_DELIVERY_V2_MEMO || !text.startsWith(DELIVERY_V2_MEMO_PREFIX)) {
|
|
155
|
+
return null;
|
|
156
|
+
}
|
|
157
|
+
const [intent = "", commitment = "", blob = "", ...rest] = text.slice(DELIVERY_V2_MEMO_PREFIX.length).split(":");
|
|
158
|
+
if (rest.length > 0 || !isAddress(intent) || !isSha256Hex(commitment) || sealedUrlRecipients(blob) === null) {
|
|
159
|
+
return null;
|
|
160
|
+
}
|
|
161
|
+
return { intent, commitment, blob };
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=sealed-delivery.js.map
|