@intent-engine/core 0.1.42 → 0.1.43
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/config.d.ts +4 -0
- package/dist/generated/client/accounts/config.js +5 -1
- package/dist/generated/client/accounts/config.js.map +1 -1
- package/dist/generated/client/accounts/intent.d.ts +6 -2
- package/dist/generated/client/accounts/intent.js +8 -4
- package/dist/generated/client/accounts/intent.js.map +1 -1
- package/dist/generated/client/accounts/mintCap.d.ts +6 -0
- package/dist/generated/client/accounts/mintCap.js +8 -2
- package/dist/generated/client/accounts/mintCap.js.map +1 -1
- package/dist/generated/client/accounts/profile.d.ts +2 -2
- package/dist/generated/client/accounts/profile.js +2 -2
- package/dist/generated/client/accounts/profile.js.map +1 -1
- package/dist/generated/client/accounts/standby.d.ts +2 -0
- package/dist/generated/client/accounts/standby.js +4 -2
- package/dist/generated/client/accounts/standby.js.map +1 -1
- package/dist/generated/client/errors/intentEngine.d.ts +25 -1
- package/dist/generated/client/errors/intentEngine.js +36 -0
- package/dist/generated/client/errors/intentEngine.js.map +1 -1
- package/dist/generated/client/events/accountMigrated.d.ts +38 -0
- package/dist/generated/client/events/accountMigrated.js +50 -0
- package/dist/generated/client/events/accountMigrated.js.map +1 -0
- package/dist/generated/client/events/committeeFloorSet.d.ts +26 -0
- package/dist/generated/client/events/committeeFloorSet.js +38 -0
- package/dist/generated/client/events/committeeFloorSet.js.map +1 -0
- package/dist/generated/client/events/index.d.ts +3 -0
- package/dist/generated/client/events/index.js +3 -0
- package/dist/generated/client/events/index.js.map +1 -1
- package/dist/generated/client/events/legacyClosed.d.ts +30 -0
- package/dist/generated/client/events/legacyClosed.js +42 -0
- package/dist/generated/client/events/legacyClosed.js.map +1 -0
- package/dist/generated/client/events/mintCapSet.d.ts +4 -0
- package/dist/generated/client/events/mintCapSet.js +4 -0
- package/dist/generated/client/events/mintCapSet.js.map +1 -1
- package/dist/generated/client/events/profileSet.d.ts +1 -0
- package/dist/generated/client/events/profileSet.js +2 -0
- package/dist/generated/client/events/profileSet.js.map +1 -1
- package/dist/generated/client/instructions/beginFill.d.ts +13 -9
- package/dist/generated/client/instructions/beginFill.js +15 -2
- package/dist/generated/client/instructions/beginFill.js.map +1 -1
- package/dist/generated/client/instructions/cancelIntent.d.ts +13 -9
- package/dist/generated/client/instructions/cancelIntent.js +15 -2
- package/dist/generated/client/instructions/cancelIntent.js.map +1 -1
- package/dist/generated/client/instructions/claimJob.d.ts +13 -9
- package/dist/generated/client/instructions/claimJob.js +15 -2
- package/dist/generated/client/instructions/claimJob.js.map +1 -1
- package/dist/generated/client/instructions/closeIntent.d.ts +13 -9
- package/dist/generated/client/instructions/closeIntent.js +21 -2
- package/dist/generated/client/instructions/closeIntent.js.map +1 -1
- package/dist/generated/client/instructions/closeLegacy.d.ts +61 -0
- package/dist/generated/client/instructions/closeLegacy.js +113 -0
- package/dist/generated/client/instructions/closeLegacy.js.map +1 -0
- package/dist/generated/client/instructions/createIntent.d.ts +14 -10
- package/dist/generated/client/instructions/createIntent.js +15 -2
- package/dist/generated/client/instructions/createIntent.js.map +1 -1
- package/dist/generated/client/instructions/createIntentSigned.d.ts +14 -10
- package/dist/generated/client/instructions/createIntentSigned.js +15 -2
- package/dist/generated/client/instructions/createIntentSigned.js.map +1 -1
- package/dist/generated/client/instructions/expireIntent.d.ts +13 -9
- package/dist/generated/client/instructions/expireIntent.js +21 -2
- package/dist/generated/client/instructions/expireIntent.js.map +1 -1
- package/dist/generated/client/instructions/fillAttested.d.ts +13 -9
- package/dist/generated/client/instructions/fillAttested.js +15 -2
- package/dist/generated/client/instructions/fillAttested.js.map +1 -1
- package/dist/generated/client/instructions/fillAttestedCommittee.d.ts +13 -9
- package/dist/generated/client/instructions/fillAttestedCommittee.js +15 -2
- package/dist/generated/client/instructions/fillAttestedCommittee.js.map +1 -1
- package/dist/generated/client/instructions/fillAttestedSplit.d.ts +13 -9
- package/dist/generated/client/instructions/fillAttestedSplit.js +15 -2
- package/dist/generated/client/instructions/fillAttestedSplit.js.map +1 -1
- package/dist/generated/client/instructions/fillAttestedSplitCommittee.d.ts +13 -9
- package/dist/generated/client/instructions/fillAttestedSplitCommittee.js +15 -2
- package/dist/generated/client/instructions/fillAttestedSplitCommittee.js.map +1 -1
- package/dist/generated/client/instructions/fillIntent.d.ts +13 -9
- package/dist/generated/client/instructions/fillIntent.js +15 -2
- package/dist/generated/client/instructions/fillIntent.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/migrate.d.ts +52 -0
- package/dist/generated/client/instructions/migrate.js +109 -0
- package/dist/generated/client/instructions/migrate.js.map +1 -0
- package/dist/generated/client/instructions/setCommitteeFloor.d.ts +53 -0
- package/dist/generated/client/instructions/setCommitteeFloor.js +96 -0
- package/dist/generated/client/instructions/setCommitteeFloor.js.map +1 -0
- package/dist/generated/client/instructions/setMintCap.d.ts +4 -0
- package/dist/generated/client/instructions/setMintCap.js +2 -0
- package/dist/generated/client/instructions/setMintCap.js.map +1 -1
- package/dist/generated/client/instructions/standBy.d.ts +13 -9
- package/dist/generated/client/instructions/standBy.js +15 -2
- package/dist/generated/client/instructions/standBy.js.map +1 -1
- package/dist/generated/client/programs/intentEngine.d.ts +158 -137
- package/dist/generated/client/programs/intentEngine.js +194 -137
- package/dist/generated/client/programs/intentEngine.js.map +1 -1
- package/dist/generated/client/types/profileFields.d.ts +1 -0
- package/dist/generated/client/types/profileFields.js +2 -0
- package/dist/generated/client/types/profileFields.js.map +1 -1
- package/dist/src/claims.d.ts +2 -2
- package/dist/src/committee-floors.d.ts +21 -0
- package/dist/src/committee-floors.js +27 -0
- package/dist/src/committee-floors.js.map +1 -0
- package/dist/src/committee.d.ts +4 -4
- package/dist/src/committee.js +14 -17
- package/dist/src/committee.js.map +1 -1
- package/dist/src/encryption-key.d.ts +28 -0
- package/dist/src/encryption-key.js +94 -0
- package/dist/src/encryption-key.js.map +1 -0
- package/dist/src/events.d.ts +4 -1
- package/dist/src/events.js +5 -1
- package/dist/src/events.js.map +1 -1
- package/dist/src/fill-builders.d.ts +7 -5
- package/dist/src/fill-builders.js +4 -0
- package/dist/src/fill-builders.js.map +1 -1
- package/dist/src/index.d.ts +4 -0
- package/dist/src/index.js +4 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/intent-builders.d.ts +8 -6
- package/dist/src/intent-builders.js +6 -1
- package/dist/src/intent-builders.js.map +1 -1
- package/dist/src/memo.d.ts +7 -1
- package/dist/src/memo.js +18 -4
- package/dist/src/memo.js.map +1 -1
- package/dist/src/migrate.d.ts +25 -0
- package/dist/src/migrate.js +46 -0
- package/dist/src/migrate.js.map +1 -0
- package/dist/src/mint-caps.d.ts +5 -1
- package/dist/src/mint-caps.js +13 -2
- package/dist/src/mint-caps.js.map +1 -1
- package/dist/src/profile.d.ts +2 -0
- package/dist/src/profile.js +13 -4
- package/dist/src/profile.js.map +1 -1
- package/dist/src/sealed-delivery.d.ts +54 -10
- package/dist/src/sealed-delivery.js +183 -55
- package/dist/src/sealed-delivery.js.map +1 -1
- package/dist/src/sealed.d.ts +1 -0
- package/dist/src/sealed.js +2 -2
- package/dist/src/sealed.js.map +1 -1
- package/dist/src/sig.d.ts +17 -4
- package/dist/src/sig.js +80 -10
- package/dist/src/sig.js.map +1 -1
- package/dist/src/state.d.ts +3 -3
- package/dist/src/state.js +3 -3
- package/dist/src/versions.d.ts +56 -0
- package/dist/src/versions.js +126 -0
- package/dist/src/versions.js.map +1 -0
- package/generated/idl.json +567 -6
- package/package.json +2 -1
|
@@ -20,13 +20,15 @@ export type CreateIntentSpec = {
|
|
|
20
20
|
receiver?: Address;
|
|
21
21
|
receiverAuthority?: Address;
|
|
22
22
|
mintCap?: Address;
|
|
23
|
+
committee?: Address;
|
|
23
24
|
};
|
|
24
|
-
export declare function buildCreateIntent(input: CreateIntentSpec): Promise<import("../generated/client/index.js").CreateIntentInstruction<Address<"GHFB9q4fhhqRyCoycoivdxMhFkp1aLHJk5VvroUsgrJU">, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, "GHFB9q4fhhqRyCoycoivdxMhFkp1aLHJk5VvroUsgrJU", []>>;
|
|
25
|
+
export declare function buildCreateIntent(input: CreateIntentSpec): Promise<import("../generated/client/index.js").CreateIntentInstruction<Address<"GHFB9q4fhhqRyCoycoivdxMhFkp1aLHJk5VvroUsgrJU">, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, "GHFB9q4fhhqRyCoycoivdxMhFkp1aLHJk5VvroUsgrJU", []>>;
|
|
25
26
|
type IntentRef = {
|
|
26
27
|
owner: Address;
|
|
27
28
|
nonce: bigint;
|
|
28
29
|
inputMint: Address;
|
|
29
30
|
tokenProgram: Address;
|
|
31
|
+
capped?: bigint;
|
|
30
32
|
};
|
|
31
33
|
export declare function buildCancelIntent(input: Omit<IntentRef, "owner"> & {
|
|
32
34
|
owner: TransactionSigner;
|
|
@@ -36,12 +38,12 @@ export declare function buildCancelIntent(input: Omit<IntentRef, "owner"> & {
|
|
|
36
38
|
board: Address;
|
|
37
39
|
stakeTo: Address | null;
|
|
38
40
|
};
|
|
39
|
-
}): Promise<import("../generated/client/index.js").CancelIntentInstruction<Address<"GHFB9q4fhhqRyCoycoivdxMhFkp1aLHJk5VvroUsgrJU">, string, string, string, string, string, string, string, string, string, "GHFB9q4fhhqRyCoycoivdxMhFkp1aLHJk5VvroUsgrJU", []>>;
|
|
41
|
+
}): Promise<import("../generated/client/index.js").CancelIntentInstruction<Address<"GHFB9q4fhhqRyCoycoivdxMhFkp1aLHJk5VvroUsgrJU">, string, string, string, string, string, string, string, string, string, string, "GHFB9q4fhhqRyCoycoivdxMhFkp1aLHJk5VvroUsgrJU", []>>;
|
|
40
42
|
export declare function buildExpireIntent(input: IntentRef & {
|
|
41
43
|
cranker: TransactionSigner;
|
|
42
44
|
refundTo?: Address;
|
|
43
45
|
ext?: Uint8Array;
|
|
44
|
-
}): Promise<import("../generated/client/index.js").ExpireIntentInstruction<Address<"GHFB9q4fhhqRyCoycoivdxMhFkp1aLHJk5VvroUsgrJU">, string, string, string, string, string, string, string, string, "GHFB9q4fhhqRyCoycoivdxMhFkp1aLHJk5VvroUsgrJU", []>>;
|
|
46
|
+
}): Promise<import("../generated/client/index.js").ExpireIntentInstruction<Address<"GHFB9q4fhhqRyCoycoivdxMhFkp1aLHJk5VvroUsgrJU">, string, string, string, string, string, string, string, string, string, "GHFB9q4fhhqRyCoycoivdxMhFkp1aLHJk5VvroUsgrJU", []>>;
|
|
45
47
|
export declare function buildCloseIntent(input: IntentRef & {
|
|
46
48
|
cranker: TransactionSigner;
|
|
47
49
|
rentPayer?: Address;
|
|
@@ -50,7 +52,7 @@ export declare function buildCloseIntent(input: IntentRef & {
|
|
|
50
52
|
};
|
|
51
53
|
refundTo?: Address;
|
|
52
54
|
ext?: Uint8Array;
|
|
53
|
-
}): Promise<import("../generated/client/index.js").CloseIntentInstruction<Address<"GHFB9q4fhhqRyCoycoivdxMhFkp1aLHJk5VvroUsgrJU">, string, string, string, string, string, string, string, string, string, string, "GHFB9q4fhhqRyCoycoivdxMhFkp1aLHJk5VvroUsgrJU", []>>;
|
|
55
|
+
}): Promise<import("../generated/client/index.js").CloseIntentInstruction<Address<"GHFB9q4fhhqRyCoycoivdxMhFkp1aLHJk5VvroUsgrJU">, string, string, string, string, string, string, string, string, string, string, string, "GHFB9q4fhhqRyCoycoivdxMhFkp1aLHJk5VvroUsgrJU", []>>;
|
|
54
56
|
export type CreateIntentSignedSpec = Omit<CreateIntentSpec, "owner"> & {
|
|
55
57
|
payer: TransactionSigner;
|
|
56
58
|
owner: Address;
|
|
@@ -58,8 +60,8 @@ export type CreateIntentSignedSpec = Omit<CreateIntentSpec, "owner"> & {
|
|
|
58
60
|
relayerFee?: bigint;
|
|
59
61
|
relayerFeeAccount?: Address;
|
|
60
62
|
};
|
|
61
|
-
export declare function buildCreateIntentSigned(input: CreateIntentSignedSpec): Promise<import("../generated/client/index.js").CreateIntentSignedInstruction<Address<"GHFB9q4fhhqRyCoycoivdxMhFkp1aLHJk5VvroUsgrJU">, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, "Sysvar1nstructions1111111111111111111111111", string, string, "GHFB9q4fhhqRyCoycoivdxMhFkp1aLHJk5VvroUsgrJU", []>>;
|
|
62
|
-
export type CreateIntentByAgentSpec = Omit<CreateIntentSpec, "owner" | "treasury" | "receiverAuthority"> & {
|
|
63
|
+
export declare function buildCreateIntentSigned(input: CreateIntentSignedSpec): Promise<import("../generated/client/index.js").CreateIntentSignedInstruction<Address<"GHFB9q4fhhqRyCoycoivdxMhFkp1aLHJk5VvroUsgrJU">, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, "Sysvar1nstructions1111111111111111111111111", string, string, string, "GHFB9q4fhhqRyCoycoivdxMhFkp1aLHJk5VvroUsgrJU", []>>;
|
|
64
|
+
export type CreateIntentByAgentSpec = Omit<CreateIntentSpec, "owner" | "treasury" | "receiverAuthority" | "committee"> & {
|
|
63
65
|
agent: TransactionSigner;
|
|
64
66
|
owner: Address;
|
|
65
67
|
mandateId: bigint;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { findDelegatePda, getCancelIntentInstructionAsync, getCloseIntentInstructionAsync, getCreateIntentInstructionAsync, getCreateIntentByAgentInstructionAsync, getCreateIntentSignedInstructionAsync, getExpireIntentInstructionAsync, } from "../generated/client/index.js";
|
|
2
2
|
import { createArgs, events, INSTRUCTIONS_SYSVAR_ADDRESS, intentOf, settleExt } from "./builder-accounts.js";
|
|
3
|
-
import { mintCapSlot, withMintCap } from "./mint-caps.js";
|
|
3
|
+
import { capAccount, mintCapSlot, withMintCap } from "./mint-caps.js";
|
|
4
4
|
import { findAssociatedTokenAddress, findMandatePda } from "./pdas.js";
|
|
5
5
|
export async function buildCreateIntent(input) {
|
|
6
6
|
const owner = input.owner.address;
|
|
@@ -29,6 +29,7 @@ export async function buildCreateIntent(input) {
|
|
|
29
29
|
inputTokenProgram: input.inputTokenProgram,
|
|
30
30
|
outputTokenProgram: input.outputTokenProgram,
|
|
31
31
|
args,
|
|
32
|
+
...(input.committee === undefined ? {} : { committee: input.committee }),
|
|
32
33
|
mintCap: mintCapSlot(input.mintCap),
|
|
33
34
|
...(await events()),
|
|
34
35
|
});
|
|
@@ -51,6 +52,7 @@ export async function buildCancelIntent(input) {
|
|
|
51
52
|
refundTo: input.refundTo ?? (await canonicalRefund(ref)),
|
|
52
53
|
tokenProgram: input.tokenProgram,
|
|
53
54
|
...(input.claims === undefined ? {} : { claims: input.claims.board, ...(input.claims.stakeTo === null ? {} : { stakeTo: input.claims.stakeTo }) }),
|
|
55
|
+
...(await capAccount(input.inputMint, input.capped)),
|
|
54
56
|
ext,
|
|
55
57
|
...(await events()),
|
|
56
58
|
});
|
|
@@ -64,6 +66,7 @@ export async function buildExpireIntent(input) {
|
|
|
64
66
|
refundTo: input.refundTo ?? (await canonicalRefund(input)),
|
|
65
67
|
canonicalRefund: await canonicalRefund(input),
|
|
66
68
|
tokenProgram: input.tokenProgram,
|
|
69
|
+
...(await capAccount(input.inputMint, input.capped)),
|
|
67
70
|
ext,
|
|
68
71
|
...(await events()),
|
|
69
72
|
});
|
|
@@ -79,6 +82,7 @@ export async function buildCloseIntent(input) {
|
|
|
79
82
|
owner: input.owner,
|
|
80
83
|
rentPayer: input.rentPayer ?? input.intent?.rentPayer ?? input.owner,
|
|
81
84
|
tokenProgram: input.tokenProgram,
|
|
85
|
+
...(await capAccount(input.inputMint, input.capped)),
|
|
82
86
|
ext,
|
|
83
87
|
...(await events()),
|
|
84
88
|
});
|
|
@@ -124,6 +128,7 @@ export async function buildCreateIntentSigned(input) {
|
|
|
124
128
|
args,
|
|
125
129
|
submitBy: input.submitBy,
|
|
126
130
|
relayerFee,
|
|
131
|
+
...(input.committee === undefined ? {} : { committee: input.committee }),
|
|
127
132
|
mintCap: mintCapSlot(input.mintCap),
|
|
128
133
|
...(await events()),
|
|
129
134
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intent-builders.js","sourceRoot":"","sources":["../../src/intent-builders.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EACf,+BAA+B,EAC/B,8BAA8B,EAC9B,+BAA+B,EAC/B,sCAAsC,EACtC,qCAAqC,EACrC,+BAA+B,GAChC,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,2BAA2B,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAG7G,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"intent-builders.js","sourceRoot":"","sources":["../../src/intent-builders.ts"],"names":[],"mappings":"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"}
|
package/dist/src/memo.d.ts
CHANGED
|
@@ -4,9 +4,14 @@ export declare const RELEASE_MEMO_PREFIX = "delivery sha256:";
|
|
|
4
4
|
export declare const FEEDBACK_MEMO_PREFIX = "solive-feedback:";
|
|
5
5
|
export declare const MAX_FEEDBACK_SCORE = 100;
|
|
6
6
|
export declare const MAX_MEMO_URL = 200;
|
|
7
|
+
export declare const RELEASE_SALT_MARK = " salt:";
|
|
7
8
|
export type SpecMemo = {
|
|
8
9
|
url: string;
|
|
9
10
|
};
|
|
11
|
+
export type ReleaseRecord = {
|
|
12
|
+
sha256: string;
|
|
13
|
+
salt?: string;
|
|
14
|
+
};
|
|
10
15
|
export type FeedbackMemo = {
|
|
11
16
|
intent: Address;
|
|
12
17
|
score: number;
|
|
@@ -18,7 +23,8 @@ export declare function isLegacyMemoUrl(url: string): boolean;
|
|
|
18
23
|
export declare function isSha256Hex(text: string): boolean;
|
|
19
24
|
export declare function specMemo(url: string): string;
|
|
20
25
|
export declare function parseSpecMemo(text: string): SpecMemo | null;
|
|
21
|
-
export declare function releaseMemo(sha256: string): string;
|
|
26
|
+
export declare function releaseMemo(sha256: string, salt?: string): string;
|
|
27
|
+
export declare function parseRelease(text: string): ReleaseRecord | null;
|
|
22
28
|
export declare function parseReleaseMemo(text: string): string | null;
|
|
23
29
|
export declare function feedbackMemo({ intent, score, note }: FeedbackMemo): string;
|
|
24
30
|
export declare function parseFeedbackMemo(text: string): FeedbackMemo | null;
|
package/dist/src/memo.js
CHANGED
|
@@ -5,6 +5,8 @@ export const RELEASE_MEMO_PREFIX = "delivery sha256:";
|
|
|
5
5
|
export const FEEDBACK_MEMO_PREFIX = `${PRODUCT_SLUG}-feedback:`;
|
|
6
6
|
export const MAX_FEEDBACK_SCORE = 100;
|
|
7
7
|
export const MAX_MEMO_URL = 200;
|
|
8
|
+
export const RELEASE_SALT_MARK = " salt:";
|
|
9
|
+
const RELEASE_SALT = /^[0-9a-f]{32}$/;
|
|
8
10
|
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`;
|
|
9
11
|
const PRINTABLE = /^[!-~]+$/;
|
|
10
12
|
const SHA256 = /^[0-9a-f]{64}$/;
|
|
@@ -52,15 +54,27 @@ export function parseSpecMemo(text) {
|
|
|
52
54
|
const url = text.slice(SPEC_MEMO_PREFIX.length);
|
|
53
55
|
return isLegacyMemoUrl(url) ? { url } : null;
|
|
54
56
|
}
|
|
55
|
-
export function releaseMemo(sha256) {
|
|
57
|
+
export function releaseMemo(sha256, salt) {
|
|
56
58
|
if (!isSha256Hex(sha256)) {
|
|
57
59
|
throw new RangeError("a release records a sha256 of 64 lowercase hex digits");
|
|
58
60
|
}
|
|
59
|
-
|
|
61
|
+
if (salt !== undefined && !RELEASE_SALT.test(salt)) {
|
|
62
|
+
throw new RangeError("a release records its payee's salt as 32 lowercase hex digits");
|
|
63
|
+
}
|
|
64
|
+
return `${RELEASE_MEMO_PREFIX}${sha256}${salt === undefined ? "" : `${RELEASE_SALT_MARK}${salt}`}`;
|
|
65
|
+
}
|
|
66
|
+
export function parseRelease(text) {
|
|
67
|
+
if (!text.startsWith(RELEASE_MEMO_PREFIX)) {
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
const [sha256 = "", salt, ...rest] = text.slice(RELEASE_MEMO_PREFIX.length).split(RELEASE_SALT_MARK);
|
|
71
|
+
if (rest.length > 0 || !isSha256Hex(sha256) || (salt !== undefined && !RELEASE_SALT.test(salt))) {
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
return salt === undefined ? { sha256 } : { sha256, salt };
|
|
60
75
|
}
|
|
61
76
|
export function parseReleaseMemo(text) {
|
|
62
|
-
|
|
63
|
-
return text.startsWith(RELEASE_MEMO_PREFIX) && isSha256Hex(sha256) ? sha256 : null;
|
|
77
|
+
return parseRelease(text)?.sha256 ?? null;
|
|
64
78
|
}
|
|
65
79
|
const SCORE = /^(0|[1-9][0-9]{0,2})$/;
|
|
66
80
|
export function feedbackMemo({ intent, score, note }) {
|
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,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;
|
|
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;AAEhC,MAAM,CAAC,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AAM1C,MAAM,YAAY,GAAG,gBAAgB,CAAC;AAItC,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,EAAE,IAAa;IACvD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,UAAU,CAAC,uDAAuD,CAAC,CAAC;IAChF,CAAC;IACD,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,UAAU,CAAC,+DAA+D,CAAC,CAAC;IACxF,CAAC;IACD,OAAO,GAAG,mBAAmB,GAAG,MAAM,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,iBAAiB,GAAG,IAAI,EAAE,EAAE,CAAC;AACrG,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,CAAC,MAAM,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrG,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAChG,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,OAAO,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,IAAI,IAAI,CAAC;AAC5C,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, ReadonlyUint8Array, TransactionSigner } from "@solana/kit";
|
|
2
|
+
import { type AccountLayout } from "./versions.js";
|
|
3
|
+
export declare const LEGACY_CONFIG_SPACE = 216;
|
|
4
|
+
export declare const LEGACY_BOARD_SPACE = 168;
|
|
5
|
+
export declare const FIRST_VERSION = 1;
|
|
6
|
+
export declare const UNVERSIONED = 0;
|
|
7
|
+
export type OutdatedLayout = {
|
|
8
|
+
discriminator: ReadonlyUint8Array;
|
|
9
|
+
space: number;
|
|
10
|
+
version: number;
|
|
11
|
+
};
|
|
12
|
+
export declare const OUTDATED_LAYOUTS: readonly OutdatedLayout[];
|
|
13
|
+
export type Migration = {
|
|
14
|
+
layout: AccountLayout;
|
|
15
|
+
from: OutdatedLayout;
|
|
16
|
+
};
|
|
17
|
+
export declare function migrationOf(data: ReadonlyUint8Array): Migration | null;
|
|
18
|
+
export declare function isConfigAccount(data: ReadonlyUint8Array): boolean;
|
|
19
|
+
type MigrateInput = {
|
|
20
|
+
payer: TransactionSigner;
|
|
21
|
+
account: Address;
|
|
22
|
+
config?: Address;
|
|
23
|
+
};
|
|
24
|
+
export declare function buildMigrate(input: MigrateInput): Promise<import("../generated/client/index.js").MigrateInstruction<Address<"GHFB9q4fhhqRyCoycoivdxMhFkp1aLHJk5VvroUsgrJU">, string, string, string, string, string, "GHFB9q4fhhqRyCoycoivdxMhFkp1aLHJk5VvroUsgrJU", []>>;
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { CLAIM_BOARD_DISCRIMINATOR, COMMITTEE_DISCRIMINATOR, CONFIG_DISCRIMINATOR, getClaimBoardSize, getCommitteeSize, getConfigSize, getIntentSize, getMandateSize, getMigrateInstruction, getMintCapSize, getProfileSize, getStandbySize, getUserStateSize, INTENT_DISCRIMINATOR, MANDATE_DISCRIMINATOR, MINT_CAP_DISCRIMINATOR, PROFILE_DISCRIMINATOR, STANDBY_DISCRIMINATOR, USER_STATE_DISCRIMINATOR, } from "../generated/client/index.js";
|
|
2
|
+
import { events } from "./builder-accounts.js";
|
|
3
|
+
import { storedVersion } from "./versions.js";
|
|
4
|
+
export const LEGACY_CONFIG_SPACE = 216;
|
|
5
|
+
export const LEGACY_BOARD_SPACE = 168;
|
|
6
|
+
export const FIRST_VERSION = 1;
|
|
7
|
+
export const UNVERSIONED = 0;
|
|
8
|
+
const outdated = (discriminator, space, version = FIRST_VERSION) => ({
|
|
9
|
+
discriminator,
|
|
10
|
+
space,
|
|
11
|
+
version,
|
|
12
|
+
});
|
|
13
|
+
export const OUTDATED_LAYOUTS = [
|
|
14
|
+
outdated(CONFIG_DISCRIMINATOR, LEGACY_CONFIG_SPACE),
|
|
15
|
+
outdated(CONFIG_DISCRIMINATOR, getConfigSize()),
|
|
16
|
+
outdated(USER_STATE_DISCRIMINATOR, getUserStateSize()),
|
|
17
|
+
outdated(INTENT_DISCRIMINATOR, getIntentSize()),
|
|
18
|
+
outdated(MANDATE_DISCRIMINATOR, getMandateSize()),
|
|
19
|
+
outdated(MINT_CAP_DISCRIMINATOR, getMintCapSize()),
|
|
20
|
+
outdated(COMMITTEE_DISCRIMINATOR, getCommitteeSize()),
|
|
21
|
+
outdated(CLAIM_BOARD_DISCRIMINATOR, LEGACY_BOARD_SPACE),
|
|
22
|
+
outdated(CLAIM_BOARD_DISCRIMINATOR, getClaimBoardSize()),
|
|
23
|
+
outdated(STANDBY_DISCRIMINATOR, getStandbySize(), UNVERSIONED),
|
|
24
|
+
outdated(PROFILE_DISCRIMINATOR, getProfileSize()),
|
|
25
|
+
];
|
|
26
|
+
const sameBytes = (a, b) => a.length === b.length && a.every((byte, i) => byte === b[i]);
|
|
27
|
+
export function migrationOf(data) {
|
|
28
|
+
const stored = storedVersion(data);
|
|
29
|
+
if (stored === null) {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
const from = OUTDATED_LAYOUTS.find((o) => sameBytes(o.discriminator, stored.layout.discriminator) && o.space === data.length && o.version === stored.version);
|
|
33
|
+
return from === undefined ? null : { layout: stored.layout, from };
|
|
34
|
+
}
|
|
35
|
+
export function isConfigAccount(data) {
|
|
36
|
+
return CONFIG_DISCRIMINATOR.every((b, i) => data[i] === b);
|
|
37
|
+
}
|
|
38
|
+
export async function buildMigrate(input) {
|
|
39
|
+
return getMigrateInstruction({
|
|
40
|
+
payer: input.payer,
|
|
41
|
+
account: input.account,
|
|
42
|
+
...(input.config === undefined ? {} : { config: input.config }),
|
|
43
|
+
...(await events()),
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=migrate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/migrate.ts"],"names":[],"mappings":"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"}
|
package/dist/src/mint-caps.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { type Address, type Instruction, type TransactionSigner } from "@solana/kit";
|
|
2
2
|
import { type MintCap } from "../generated/client/index.js";
|
|
3
|
-
export declare const MINT_CAP_VERSION = 1;
|
|
4
3
|
export declare const MIN_CAP_WINDOW_SECS = 60;
|
|
5
4
|
export declare function isMintCapData(data: Uint8Array): boolean;
|
|
6
5
|
export declare function decodeMintCapData(data: Uint8Array): MintCap;
|
|
@@ -15,10 +14,12 @@ export type MintCapLimits = {
|
|
|
15
14
|
maxPerOrder: bigint;
|
|
16
15
|
windowCap: bigint;
|
|
17
16
|
windowSecs: number;
|
|
17
|
+
totalLimit?: bigint;
|
|
18
18
|
};
|
|
19
19
|
export declare function checkMintCapLimits(limits: MintCapLimits): MintCapLimits;
|
|
20
20
|
export declare function findMintCapAddress(mint: Address): Promise<Address>;
|
|
21
21
|
export declare function buildSetMintCap(input: MintCapLimits & {
|
|
22
|
+
totalLimit: bigint;
|
|
22
23
|
admin: TransactionSigner;
|
|
23
24
|
payer?: TransactionSigner;
|
|
24
25
|
mint: Address;
|
|
@@ -27,5 +28,8 @@ export declare function buildSetCapsRequired(input: {
|
|
|
27
28
|
admin: TransactionSigner;
|
|
28
29
|
required: boolean;
|
|
29
30
|
}): Promise<import("../generated/client/index.js").SetCapsRequiredInstruction<Address<"GHFB9q4fhhqRyCoycoivdxMhFkp1aLHJk5VvroUsgrJU">, string, string, string, "GHFB9q4fhhqRyCoycoivdxMhFkp1aLHJk5VvroUsgrJU", []>>;
|
|
31
|
+
export declare function capAccount(inputMint: Address, capped: bigint | undefined): Promise<{
|
|
32
|
+
mintCap?: Address;
|
|
33
|
+
}>;
|
|
30
34
|
export declare function mintCapSlot(mintCap: Address | undefined): Address;
|
|
31
35
|
export declare function withMintCap<T extends Instruction>(ix: T, mintCap: Address | undefined): T;
|
package/dist/src/mint-caps.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { AccountRole, getAddressEncoder, getProgramDerivedAddress, } from "@solana/kit";
|
|
2
2
|
import { getMintCapDecoder, getMintCapSize, getSetCapsRequiredInstruction, getSetMintCapInstructionAsync, INTENT_ENGINE_PROGRAM_ADDRESS, MINT_CAP_DISCRIMINATOR, } from "../generated/client/index.js";
|
|
3
3
|
import { events } from "./builder-accounts.js";
|
|
4
|
-
|
|
4
|
+
import { U64_MAX } from "./math.js";
|
|
5
|
+
import { checkAccountVersion } from "./versions.js";
|
|
5
6
|
export const MIN_CAP_WINDOW_SECS = 60;
|
|
6
7
|
export function isMintCapData(data) {
|
|
7
8
|
return data.length >= getMintCapSize() && MINT_CAP_DISCRIMINATOR.every((b, i) => data[i] === b);
|
|
@@ -10,7 +11,7 @@ export function decodeMintCapData(data) {
|
|
|
10
11
|
if (!isMintCapData(data)) {
|
|
11
12
|
throw new RangeError("not a mint cap account");
|
|
12
13
|
}
|
|
13
|
-
return getMintCapDecoder().decode(data);
|
|
14
|
+
return getMintCapDecoder().decode(checkAccountVersion(data));
|
|
14
15
|
}
|
|
15
16
|
export function capWindow(cap, now) {
|
|
16
17
|
const ends = cap.windowStart + BigInt(cap.windowSecs);
|
|
@@ -33,6 +34,9 @@ export function checkMintCapLimits(limits) {
|
|
|
33
34
|
if (!Number.isInteger(limits.windowSecs) || limits.windowSecs < MIN_CAP_WINDOW_SECS || limits.windowSecs > 0xffff_ffff) {
|
|
34
35
|
throw new RangeError(`the window must last ${MIN_CAP_WINDOW_SECS} to 4294967295 seconds`);
|
|
35
36
|
}
|
|
37
|
+
if (limits.totalLimit !== undefined && (limits.totalLimit < 0n || limits.totalLimit > U64_MAX)) {
|
|
38
|
+
throw new RangeError("the total limit must be zero, meaning none, or a raw amount");
|
|
39
|
+
}
|
|
36
40
|
return limits;
|
|
37
41
|
}
|
|
38
42
|
export async function findMintCapAddress(mint) {
|
|
@@ -43,6 +47,9 @@ export async function findMintCapAddress(mint) {
|
|
|
43
47
|
return address;
|
|
44
48
|
}
|
|
45
49
|
export async function buildSetMintCap(input) {
|
|
50
|
+
if (typeof input.totalLimit !== "bigint") {
|
|
51
|
+
throw new RangeError("name the total limit: zero for none, or the current one to keep it");
|
|
52
|
+
}
|
|
46
53
|
const limits = checkMintCapLimits(input);
|
|
47
54
|
return getSetMintCapInstructionAsync({
|
|
48
55
|
admin: input.admin,
|
|
@@ -51,12 +58,16 @@ export async function buildSetMintCap(input) {
|
|
|
51
58
|
maxPerOrder: limits.maxPerOrder,
|
|
52
59
|
windowCap: limits.windowCap,
|
|
53
60
|
windowSecs: limits.windowSecs,
|
|
61
|
+
totalLimit: input.totalLimit,
|
|
54
62
|
...(await events()),
|
|
55
63
|
});
|
|
56
64
|
}
|
|
57
65
|
export async function buildSetCapsRequired(input) {
|
|
58
66
|
return getSetCapsRequiredInstruction({ admin: input.admin, required: input.required, ...(await events()) });
|
|
59
67
|
}
|
|
68
|
+
export async function capAccount(inputMint, capped) {
|
|
69
|
+
return capped === undefined || capped === 0n ? {} : { mintCap: await findMintCapAddress(inputMint) };
|
|
70
|
+
}
|
|
60
71
|
const MINT_CAP_FROM_END = 3;
|
|
61
72
|
export function mintCapSlot(mintCap) {
|
|
62
73
|
return mintCap ?? INTENT_ENGINE_PROGRAM_ADDRESS;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mint-caps.js","sourceRoot":"","sources":["../../src/mint-caps.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,WAAW,EACX,iBAAiB,EACjB,wBAAwB,GAGzB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,6BAA6B,EAC7B,6BAA6B,EAC7B,6BAA6B,EAC7B,sBAAsB,GAEvB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"mint-caps.js","sourceRoot":"","sources":["../../src/mint-caps.ts"],"names":[],"mappings":"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"}
|
package/dist/src/profile.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ export type ProfileInput = {
|
|
|
7
7
|
endpoint: string;
|
|
8
8
|
docUrl?: string;
|
|
9
9
|
docSha256?: string;
|
|
10
|
+
encryptionKey?: string;
|
|
10
11
|
};
|
|
11
12
|
export type ProfileView = {
|
|
12
13
|
wallet: Address;
|
|
@@ -14,6 +15,7 @@ export type ProfileView = {
|
|
|
14
15
|
endpoint: string;
|
|
15
16
|
docUrl: string | null;
|
|
16
17
|
docSha256: string | null;
|
|
18
|
+
encryptionKey: string | null;
|
|
17
19
|
updatedAt: bigint;
|
|
18
20
|
};
|
|
19
21
|
export declare function checkProfile(input: ProfileInput): ProfileInput;
|
package/dist/src/profile.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { getBase16Decoder, getBase16Encoder } from "@solana/kit";
|
|
2
2
|
import { findProfilePda, getCloseProfileInstructionAsync, getCreateProfileInstructionAsync, getProfileDecoder, getProfileSize, getUpdateProfileInstructionAsync, PROFILE_DISCRIMINATOR, } from "../generated/client/index.js";
|
|
3
3
|
import { events } from "./builder-accounts.js";
|
|
4
|
+
import { ENCRYPTION_KEY_BYTES, encryptionKeyText, isEncryptionKeyText, parseEncryptionKey } from "./encryption-key.js";
|
|
4
5
|
import { IntentCoreError } from "./errors.js";
|
|
6
|
+
import { checkAccountVersion } from "./versions.js";
|
|
5
7
|
export const PROFILE_MAX_SKILLS = 8;
|
|
6
8
|
export const PROFILE_SKILL_LEN = 16;
|
|
7
9
|
export const PROFILE_MAX_URL_LEN = 128;
|
|
@@ -11,7 +13,7 @@ const SHA256 = /^[0-9a-f]{64}$/;
|
|
|
11
13
|
const ZERO_HASH = "0".repeat(64);
|
|
12
14
|
const validUrl = (text) => text.length <= PROFILE_MAX_URL_LEN && URL_BODY.test(text);
|
|
13
15
|
export function checkProfile(input) {
|
|
14
|
-
const { skills, endpoint, docUrl, docSha256 } = input;
|
|
16
|
+
const { skills, endpoint, docUrl, docSha256, encryptionKey } = input;
|
|
15
17
|
const hash = docSha256?.toLowerCase();
|
|
16
18
|
const skillsValid = skills.length >= 1 &&
|
|
17
19
|
skills.length <= PROFILE_MAX_SKILLS &&
|
|
@@ -20,10 +22,15 @@ export function checkProfile(input) {
|
|
|
20
22
|
const docValid = (docUrl === undefined) === (hash === undefined) &&
|
|
21
23
|
(docUrl === undefined || validUrl(docUrl)) &&
|
|
22
24
|
(hash === undefined || (SHA256.test(hash) && hash !== ZERO_HASH));
|
|
23
|
-
if (!skillsValid || !validUrl(endpoint) || !docValid) {
|
|
25
|
+
if (!skillsValid || !validUrl(endpoint) || !docValid || (encryptionKey !== undefined && !isEncryptionKeyText(encryptionKey))) {
|
|
24
26
|
throw new IntentCoreError("ProfileInvalid");
|
|
25
27
|
}
|
|
26
|
-
return {
|
|
28
|
+
return {
|
|
29
|
+
skills: [...skills],
|
|
30
|
+
endpoint,
|
|
31
|
+
...(docUrl === undefined || hash === undefined ? {} : { docUrl, docSha256: hash }),
|
|
32
|
+
...(encryptionKey === undefined ? {} : { encryptionKey }),
|
|
33
|
+
};
|
|
27
34
|
}
|
|
28
35
|
function fieldsOf(input) {
|
|
29
36
|
const checked = checkProfile(input);
|
|
@@ -32,6 +39,7 @@ function fieldsOf(input) {
|
|
|
32
39
|
endpoint: checked.endpoint,
|
|
33
40
|
docUrl: checked.docUrl ?? "",
|
|
34
41
|
docHash: checked.docSha256 === undefined ? new Uint8Array(32) : getBase16Encoder().encode(checked.docSha256),
|
|
42
|
+
encryptionKey: checked.encryptionKey === undefined ? new Uint8Array(ENCRYPTION_KEY_BYTES) : parseEncryptionKey(checked.encryptionKey),
|
|
35
43
|
};
|
|
36
44
|
}
|
|
37
45
|
export async function profileAddress(wallet) {
|
|
@@ -56,7 +64,7 @@ export function profileView(data) {
|
|
|
56
64
|
if (data.length < getProfileSize() || !PROFILE_DISCRIMINATOR.every((b, i) => data[i] === b)) {
|
|
57
65
|
throw new RangeError("the data is not a profile account");
|
|
58
66
|
}
|
|
59
|
-
const stored = getProfileDecoder().decode(data);
|
|
67
|
+
const stored = getProfileDecoder().decode(checkAccountVersion(data));
|
|
60
68
|
const docUrl = ascii(stored.docUrl);
|
|
61
69
|
const docSha256 = getBase16Decoder().decode(stored.docHash).toLowerCase();
|
|
62
70
|
return {
|
|
@@ -65,6 +73,7 @@ export function profileView(data) {
|
|
|
65
73
|
endpoint: ascii(stored.endpoint),
|
|
66
74
|
docUrl: docUrl === "" ? null : docUrl,
|
|
67
75
|
docSha256: docSha256 === ZERO_HASH ? null : docSha256,
|
|
76
|
+
encryptionKey: stored.encryptionKey.some((b) => b !== 0) ? encryptionKeyText(Uint8Array.from(stored.encryptionKey)) : null,
|
|
68
77
|
updatedAt: stored.updatedAt,
|
|
69
78
|
};
|
|
70
79
|
}
|
package/dist/src/profile.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/profile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,gBAAgB,EAAE,gBAAgB,EAAmD,MAAM,aAAa,CAAC;AAChI,OAAO,EACL,cAAc,EACd,+BAA+B,EAC/B,gCAAgC,EAChC,iBAAiB,EACjB,cAAc,EACd,gCAAgC,EAChC,qBAAqB,GACtB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/profile.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,25 +1,69 @@
|
|
|
1
1
|
import { type Address } from "@solana/kit";
|
|
2
|
-
|
|
3
|
-
export declare const
|
|
4
|
-
export declare const
|
|
5
|
-
export declare const
|
|
2
|
+
import { type DeliveryOpener } from "./encryption-key.js";
|
|
3
|
+
export declare const DELIVERY_MEMO_MARK = "solive-delivery3";
|
|
4
|
+
export declare const DELIVERY_MEMO_PREFIX = "solive-delivery3:";
|
|
5
|
+
export declare const OPENING_MEMO_PREFIX = "solive-delivery3-open:";
|
|
6
|
+
export declare const COMMITMENT_TAG = "solive-delivery-v3";
|
|
7
|
+
export declare const SALT_TAG = "solive-delivery-salt-v3";
|
|
8
|
+
export declare const SALT_CHECK_TAG = "solive-delivery-check-v3";
|
|
9
|
+
export declare const SALT_BYTES = 16;
|
|
10
|
+
export declare const SEALED_URL_VERSION = 3;
|
|
11
|
+
export declare const MAX_DELIVERY_MEMO = 960;
|
|
12
|
+
export declare const MAX_OPENING_MEMO = 960;
|
|
6
13
|
export declare const MAX_SEALED_URL_RECIPIENTS = 8;
|
|
7
|
-
export
|
|
14
|
+
export declare const UNOPENED = "-";
|
|
15
|
+
export type DeliveryMemo = {
|
|
8
16
|
intent: Address;
|
|
9
17
|
commitment: string;
|
|
18
|
+
check: string;
|
|
10
19
|
blob: string;
|
|
11
20
|
};
|
|
12
21
|
export type Commitment = {
|
|
13
22
|
intent: Address;
|
|
14
23
|
worker: Address;
|
|
24
|
+
salt: string;
|
|
15
25
|
sha256: string;
|
|
16
26
|
};
|
|
27
|
+
export type SealedDelivery = {
|
|
28
|
+
salt: string;
|
|
29
|
+
url: string;
|
|
30
|
+
};
|
|
31
|
+
export type JudgeOpening = {
|
|
32
|
+
intent: Address;
|
|
33
|
+
salts: (string | null)[];
|
|
34
|
+
};
|
|
35
|
+
export type SelfOpening = {
|
|
36
|
+
intent: Address;
|
|
37
|
+
announcement: string;
|
|
38
|
+
salt: string;
|
|
39
|
+
};
|
|
40
|
+
export type Opening = JudgeOpening | SelfOpening;
|
|
41
|
+
export type SealedKey = "wallet" | "profile";
|
|
42
|
+
export type SealRecipient = Address | {
|
|
43
|
+
wallet: Address;
|
|
44
|
+
encryptionKey: Uint8Array | null;
|
|
45
|
+
};
|
|
46
|
+
export declare const FINGERPRINT_BYTES = 8;
|
|
47
|
+
export declare const FINGERPRINT_TAG = "solive-delivery-key-v3";
|
|
48
|
+
export declare const MAX_OPENED_SALTS: number;
|
|
49
|
+
export declare const isSaltHex: (text: string) => boolean;
|
|
17
50
|
export declare function maxSealedUrl(recipients: number): number;
|
|
18
51
|
export declare const sealedUrlTooLong: (length: number, recipients: number) => string;
|
|
19
|
-
export declare function
|
|
52
|
+
export declare function saltMessage(intent: Address, sha256: string): Uint8Array<ArrayBuffer>;
|
|
53
|
+
export declare function saltPreimage(signature: Uint8Array): Uint8Array<ArrayBuffer>;
|
|
54
|
+
export declare function saltOfSignature(signature: Uint8Array): Promise<string>;
|
|
55
|
+
export declare function saltCheckPreimage(salt: string): Uint8Array<ArrayBuffer>;
|
|
56
|
+
export declare function saltCheck(salt: string): Promise<string>;
|
|
57
|
+
export declare function commitmentPreimage({ intent, worker, salt, sha256 }: Commitment): Uint8Array<ArrayBuffer>;
|
|
20
58
|
export declare function deliveryCommitment(commitment: Commitment): Promise<string>;
|
|
21
|
-
export declare function
|
|
59
|
+
export declare function keyFingerprint(publicKey: Uint8Array): Promise<string>;
|
|
60
|
+
export declare function sealDelivery({ salt, url }: SealedDelivery, recipients: readonly SealRecipient[], intent: Address): Promise<string>;
|
|
22
61
|
export declare function sealedUrlRecipients(blob: string): number | null;
|
|
23
|
-
export declare function
|
|
24
|
-
export declare function
|
|
25
|
-
export declare function
|
|
62
|
+
export declare function sealedKeys(blob: string): SealedKey[] | null;
|
|
63
|
+
export declare function sealedFingerprints(blob: string): string[] | null;
|
|
64
|
+
export declare function openDelivery(blob: string, opener: DeliveryOpener, intent: Address): Promise<SealedDelivery | null>;
|
|
65
|
+
export declare function deliveryMemo({ intent, commitment, check, blob }: DeliveryMemo): string;
|
|
66
|
+
export declare function parseDeliveryMemo(text: string): DeliveryMemo | null;
|
|
67
|
+
export declare function isSignatureText(text: string): boolean;
|
|
68
|
+
export declare function openingMemo(opening: Opening): string;
|
|
69
|
+
export declare function parseOpeningMemo(text: string): Opening | null;
|