@intent-engine/core 0.1.26 → 0.1.28

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 (182) hide show
  1. package/dist/generated/client/accounts/claimBoard.d.ts +50 -0
  2. package/dist/generated/client/accounts/claimBoard.js +77 -0
  3. package/dist/generated/client/accounts/claimBoard.js.map +1 -0
  4. package/dist/generated/client/accounts/committee.d.ts +48 -0
  5. package/dist/generated/client/accounts/committee.js +75 -0
  6. package/dist/generated/client/accounts/committee.js.map +1 -0
  7. package/dist/generated/client/accounts/config.d.ts +2 -0
  8. package/dist/generated/client/accounts/config.js +4 -2
  9. package/dist/generated/client/accounts/config.js.map +1 -1
  10. package/dist/generated/client/accounts/index.d.ts +4 -0
  11. package/dist/generated/client/accounts/index.js +4 -0
  12. package/dist/generated/client/accounts/index.js.map +1 -1
  13. package/dist/generated/client/accounts/intent.d.ts +2 -0
  14. package/dist/generated/client/accounts/intent.js +4 -2
  15. package/dist/generated/client/accounts/intent.js.map +1 -1
  16. package/dist/generated/client/accounts/mintCap.d.ts +48 -0
  17. package/dist/generated/client/accounts/mintCap.js +75 -0
  18. package/dist/generated/client/accounts/mintCap.js.map +1 -0
  19. package/dist/generated/client/accounts/profile.d.ts +48 -0
  20. package/dist/generated/client/accounts/profile.js +81 -0
  21. package/dist/generated/client/accounts/profile.js.map +1 -0
  22. package/dist/generated/client/errors/intentEngine.d.ts +31 -1
  23. package/dist/generated/client/errors/intentEngine.js +45 -0
  24. package/dist/generated/client/errors/intentEngine.js.map +1 -1
  25. package/dist/generated/client/events/capsRequiredSet.d.ts +22 -0
  26. package/dist/generated/client/events/capsRequiredSet.js +32 -0
  27. package/dist/generated/client/events/capsRequiredSet.js.map +1 -0
  28. package/dist/generated/client/events/claimDropped.d.ts +28 -0
  29. package/dist/generated/client/events/claimDropped.js +40 -0
  30. package/dist/generated/client/events/claimDropped.js.map +1 -0
  31. package/dist/generated/client/events/claimsClosed.d.ts +23 -0
  32. package/dist/generated/client/events/claimsClosed.js +38 -0
  33. package/dist/generated/client/events/claimsClosed.js.map +1 -0
  34. package/dist/generated/client/events/claimsOpened.d.ts +30 -0
  35. package/dist/generated/client/events/claimsOpened.js +42 -0
  36. package/dist/generated/client/events/claimsOpened.js.map +1 -0
  37. package/dist/generated/client/events/committeeAttested.d.ts +24 -0
  38. package/dist/generated/client/events/committeeAttested.js +40 -0
  39. package/dist/generated/client/events/committeeAttested.js.map +1 -0
  40. package/dist/generated/client/events/committeeCreated.d.ts +25 -0
  41. package/dist/generated/client/events/committeeCreated.js +42 -0
  42. package/dist/generated/client/events/committeeCreated.js.map +1 -0
  43. package/dist/generated/client/events/index.d.ts +11 -0
  44. package/dist/generated/client/events/index.js +11 -0
  45. package/dist/generated/client/events/index.js.map +1 -1
  46. package/dist/generated/client/events/jobClaimed.d.ts +30 -0
  47. package/dist/generated/client/events/jobClaimed.js +42 -0
  48. package/dist/generated/client/events/jobClaimed.js.map +1 -0
  49. package/dist/generated/client/events/mintCapSet.d.ts +36 -0
  50. package/dist/generated/client/events/mintCapSet.js +48 -0
  51. package/dist/generated/client/events/mintCapSet.js.map +1 -0
  52. package/dist/generated/client/events/profileClosed.d.ts +22 -0
  53. package/dist/generated/client/events/profileClosed.js +32 -0
  54. package/dist/generated/client/events/profileClosed.js.map +1 -0
  55. package/dist/generated/client/events/profileSet.d.ts +26 -0
  56. package/dist/generated/client/events/profileSet.js +50 -0
  57. package/dist/generated/client/events/profileSet.js.map +1 -0
  58. package/dist/generated/client/events/stakeMoved.d.ts +32 -0
  59. package/dist/generated/client/events/stakeMoved.js +44 -0
  60. package/dist/generated/client/events/stakeMoved.js.map +1 -0
  61. package/dist/generated/client/instructions/claimJob.d.ts +72 -0
  62. package/dist/generated/client/instructions/claimJob.js +163 -0
  63. package/dist/generated/client/instructions/claimJob.js.map +1 -0
  64. package/dist/generated/client/instructions/closeProfile.d.ts +55 -0
  65. package/dist/generated/client/instructions/closeProfile.js +131 -0
  66. package/dist/generated/client/instructions/closeProfile.js.map +1 -0
  67. package/dist/generated/client/instructions/createCommittee.d.ts +76 -0
  68. package/dist/generated/client/instructions/createCommittee.js +163 -0
  69. package/dist/generated/client/instructions/createCommittee.js.map +1 -0
  70. package/dist/generated/client/instructions/createIntent.d.ts +13 -9
  71. package/dist/generated/client/instructions/createIntent.js +21 -2
  72. package/dist/generated/client/instructions/createIntent.js.map +1 -1
  73. package/dist/generated/client/instructions/createIntentByAgent.d.ts +13 -9
  74. package/dist/generated/client/instructions/createIntentByAgent.js +21 -2
  75. package/dist/generated/client/instructions/createIntentByAgent.js.map +1 -1
  76. package/dist/generated/client/instructions/createIntentSigned.d.ts +13 -9
  77. package/dist/generated/client/instructions/createIntentSigned.js +15 -2
  78. package/dist/generated/client/instructions/createIntentSigned.js.map +1 -1
  79. package/dist/generated/client/instructions/createProfile.d.ts +65 -0
  80. package/dist/generated/client/instructions/createProfile.js +162 -0
  81. package/dist/generated/client/instructions/createProfile.js.map +1 -0
  82. package/dist/generated/client/instructions/dropClaim.d.ts +59 -0
  83. package/dist/generated/client/instructions/dropClaim.js +128 -0
  84. package/dist/generated/client/instructions/dropClaim.js.map +1 -0
  85. package/dist/generated/client/instructions/fillAttested.d.ts +17 -9
  86. package/dist/generated/client/instructions/fillAttested.js +20 -2
  87. package/dist/generated/client/instructions/fillAttested.js.map +1 -1
  88. package/dist/generated/client/instructions/fillAttestedCommittee.d.ts +124 -0
  89. package/dist/generated/client/instructions/fillAttestedCommittee.js +271 -0
  90. package/dist/generated/client/instructions/fillAttestedCommittee.js.map +1 -0
  91. package/dist/generated/client/instructions/fillAttestedSplit.d.ts +22 -17
  92. package/dist/generated/client/instructions/fillAttestedSplit.js +24 -7
  93. package/dist/generated/client/instructions/fillAttestedSplit.js.map +1 -1
  94. package/dist/generated/client/instructions/fillAttestedSplitCommittee.d.ts +157 -0
  95. package/dist/generated/client/instructions/fillAttestedSplitCommittee.js +373 -0
  96. package/dist/generated/client/instructions/fillAttestedSplitCommittee.js.map +1 -0
  97. package/dist/generated/client/instructions/index.d.ts +12 -0
  98. package/dist/generated/client/instructions/index.js +12 -0
  99. package/dist/generated/client/instructions/index.js.map +1 -1
  100. package/dist/generated/client/instructions/openClaims.d.ts +72 -0
  101. package/dist/generated/client/instructions/openClaims.js +160 -0
  102. package/dist/generated/client/instructions/openClaims.js.map +1 -0
  103. package/dist/generated/client/instructions/setCapsRequired.d.ts +50 -0
  104. package/dist/generated/client/instructions/setCapsRequired.js +93 -0
  105. package/dist/generated/client/instructions/setCapsRequired.js.map +1 -0
  106. package/dist/generated/client/instructions/setMintCap.d.ts +84 -0
  107. package/dist/generated/client/instructions/setMintCap.js +188 -0
  108. package/dist/generated/client/instructions/setMintCap.js.map +1 -0
  109. package/dist/generated/client/instructions/settleClaims.d.ts +63 -0
  110. package/dist/generated/client/instructions/settleClaims.js +139 -0
  111. package/dist/generated/client/instructions/settleClaims.js.map +1 -0
  112. package/dist/generated/client/instructions/updateProfile.d.ts +61 -0
  113. package/dist/generated/client/instructions/updateProfile.js +140 -0
  114. package/dist/generated/client/instructions/updateProfile.js.map +1 -0
  115. package/dist/generated/client/pdas/board.d.ts +14 -0
  116. package/dist/generated/client/pdas/board.js +19 -0
  117. package/dist/generated/client/pdas/board.js.map +1 -0
  118. package/dist/generated/client/pdas/committee.d.ts +14 -0
  119. package/dist/generated/client/pdas/committee.js +19 -0
  120. package/dist/generated/client/pdas/committee.js.map +1 -0
  121. package/dist/generated/client/pdas/index.d.ts +4 -0
  122. package/dist/generated/client/pdas/index.js +4 -0
  123. package/dist/generated/client/pdas/index.js.map +1 -1
  124. package/dist/generated/client/pdas/mintCap.d.ts +14 -0
  125. package/dist/generated/client/pdas/mintCap.js +19 -0
  126. package/dist/generated/client/pdas/mintCap.js.map +1 -0
  127. package/dist/generated/client/pdas/profile.d.ts +14 -0
  128. package/dist/generated/client/pdas/profile.js +19 -0
  129. package/dist/generated/client/pdas/profile.js.map +1 -0
  130. package/dist/generated/client/programs/intentEngine.d.ts +190 -92
  131. package/dist/generated/client/programs/intentEngine.js +336 -91
  132. package/dist/generated/client/programs/intentEngine.js.map +1 -1
  133. package/dist/generated/client/types/index.d.ts +2 -0
  134. package/dist/generated/client/types/index.js +2 -0
  135. package/dist/generated/client/types/index.js.map +1 -1
  136. package/dist/generated/client/types/profileFields.d.ts +18 -0
  137. package/dist/generated/client/types/profileFields.js +34 -0
  138. package/dist/generated/client/types/profileFields.js.map +1 -0
  139. package/dist/generated/client/types/splitClaim.d.ts +16 -0
  140. package/dist/generated/client/types/splitClaim.js +24 -0
  141. package/dist/generated/client/types/splitClaim.js.map +1 -0
  142. package/dist/src/builders.d.ts +1 -1
  143. package/dist/src/builders.js +1 -1
  144. package/dist/src/builders.js.map +1 -1
  145. package/dist/src/claims.d.ts +47 -0
  146. package/dist/src/claims.js +69 -0
  147. package/dist/src/claims.js.map +1 -0
  148. package/dist/src/committee.d.ts +40 -0
  149. package/dist/src/committee.js +145 -0
  150. package/dist/src/committee.js.map +1 -0
  151. package/dist/src/describe.d.ts +1 -0
  152. package/dist/src/describe.js +3 -0
  153. package/dist/src/describe.js.map +1 -1
  154. package/dist/src/errors.d.ts +1 -1
  155. package/dist/src/errors.js +5 -0
  156. package/dist/src/errors.js.map +1 -1
  157. package/dist/src/events.d.ts +12 -1
  158. package/dist/src/events.js +15 -1
  159. package/dist/src/events.js.map +1 -1
  160. package/dist/src/fill-builders.d.ts +15 -3
  161. package/dist/src/fill-builders.js +37 -53
  162. package/dist/src/fill-builders.js.map +1 -1
  163. package/dist/src/index.d.ts +4 -0
  164. package/dist/src/index.js +4 -0
  165. package/dist/src/index.js.map +1 -1
  166. package/dist/src/intent-builders.d.ts +7 -3
  167. package/dist/src/intent-builders.js +11 -4
  168. package/dist/src/intent-builders.js.map +1 -1
  169. package/dist/src/memo.d.ts +9 -0
  170. package/dist/src/memo.js +28 -0
  171. package/dist/src/memo.js.map +1 -1
  172. package/dist/src/mint-caps.d.ts +31 -0
  173. package/dist/src/mint-caps.js +73 -0
  174. package/dist/src/mint-caps.js.map +1 -0
  175. package/dist/src/profile.d.ts +30 -0
  176. package/dist/src/profile.js +71 -0
  177. package/dist/src/profile.js.map +1 -0
  178. package/dist/src/state.d.ts +3 -0
  179. package/dist/src/state.js +5 -0
  180. package/dist/src/state.js.map +1 -1
  181. package/generated/idl.json +1990 -63
  182. package/package.json +3 -3
@@ -2,6 +2,8 @@ import { type Address } from "@solana/kit";
2
2
  export declare const SPEC_MEMO_PREFIX = "solive-spec:";
3
3
  export declare const DELIVERY_MEMO_PREFIX = "solive-delivery:";
4
4
  export declare const RELEASE_MEMO_PREFIX = "delivery sha256:";
5
+ export declare const FEEDBACK_MEMO_PREFIX = "solive-feedback:";
6
+ export declare const MAX_FEEDBACK_SCORE = 100;
5
7
  export declare const MAX_MEMO_URL = 200;
6
8
  export declare const MAX_DELIVERY_MEMO: number;
7
9
  export type SpecMemo = {
@@ -12,6 +14,11 @@ export type DeliveryMemo = {
12
14
  sha256: string;
13
15
  url: string;
14
16
  };
17
+ export type FeedbackMemo = {
18
+ intent: Address;
19
+ score: number;
20
+ note?: string;
21
+ };
15
22
  export declare const MEMO_URL_RULE = "an https url of at most 200 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";
16
23
  export declare function isMemoUrl(url: string): boolean;
17
24
  export declare function isLegacyMemoUrl(url: string): boolean;
@@ -22,3 +29,5 @@ export declare function deliveryMemo({ intent, sha256, url }: DeliveryMemo): str
22
29
  export declare function parseDeliveryMemo(text: string): DeliveryMemo | null;
23
30
  export declare function releaseMemo(sha256: string): string;
24
31
  export declare function parseReleaseMemo(text: string): string | null;
32
+ export declare function feedbackMemo({ intent, score, note }: FeedbackMemo): string;
33
+ export declare function parseFeedbackMemo(text: string): FeedbackMemo | null;
package/dist/src/memo.js CHANGED
@@ -3,6 +3,8 @@ import { PRODUCT_SLUG } from "../generated/identity.js";
3
3
  export const SPEC_MEMO_PREFIX = `${PRODUCT_SLUG}-spec:`;
4
4
  export const DELIVERY_MEMO_PREFIX = `${PRODUCT_SLUG}-delivery:`;
5
5
  export const RELEASE_MEMO_PREFIX = "delivery sha256:";
6
+ export const FEEDBACK_MEMO_PREFIX = `${PRODUCT_SLUG}-feedback:`;
7
+ export const MAX_FEEDBACK_SCORE = 100;
6
8
  export const MAX_MEMO_URL = 200;
7
9
  export const MAX_DELIVERY_MEMO = DELIVERY_MEMO_PREFIX.length + 44 + 1 + 64 + 1 + MAX_MEMO_URL;
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`;
@@ -91,4 +93,30 @@ export function parseReleaseMemo(text) {
91
93
  const sha256 = text.slice(RELEASE_MEMO_PREFIX.length);
92
94
  return text.startsWith(RELEASE_MEMO_PREFIX) && isSha256Hex(sha256) ? sha256 : null;
93
95
  }
96
+ const SCORE = /^(0|[1-9][0-9]{0,2})$/;
97
+ export function feedbackMemo({ intent, score, note }) {
98
+ if (!isAddress(intent)) {
99
+ throw new RangeError("feedback names its intent by a base58 address");
100
+ }
101
+ if (!Number.isInteger(score) || score < 0 || score > MAX_FEEDBACK_SCORE) {
102
+ throw new RangeError(`a feedback score is a whole number from 0 to ${MAX_FEEDBACK_SCORE}`);
103
+ }
104
+ if (note !== undefined && !isSha256Hex(note)) {
105
+ throw new RangeError("a feedback note is the sha256 of the note as 64 lowercase hex digits");
106
+ }
107
+ return `${FEEDBACK_MEMO_PREFIX}${intent}:${score}${note === undefined ? "" : `:${note}`}`;
108
+ }
109
+ export function parseFeedbackMemo(text) {
110
+ if (!text.startsWith(FEEDBACK_MEMO_PREFIX)) {
111
+ return null;
112
+ }
113
+ const [intent = "", score = "", note, ...rest] = text.slice(FEEDBACK_MEMO_PREFIX.length).split(":");
114
+ if (rest.length > 0 || !isAddress(intent) || !SCORE.test(score) || Number(score) > MAX_FEEDBACK_SCORE) {
115
+ return null;
116
+ }
117
+ if (note !== undefined && !isSha256Hex(note)) {
118
+ return null;
119
+ }
120
+ return { intent, score: Number(score), ...(note === undefined ? {} : { note }) };
121
+ }
94
122
  //# sourceMappingURL=memo.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"memo.js","sourceRoot":"","sources":["../../src/memo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memo.js","sourceRoot":"","sources":["../../src/memo.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import { type Address, type Instruction, type TransactionSigner } from "@solana/kit";
2
+ import { type MintCap } from "../generated/client/index.js";
3
+ export declare const MINT_CAP_VERSION = 1;
4
+ export declare const MIN_CAP_WINDOW_SECS = 60;
5
+ export declare function isMintCapData(data: Uint8Array): boolean;
6
+ export declare function decodeMintCapData(data: Uint8Array): MintCap;
7
+ export type CapWindow = {
8
+ start: bigint;
9
+ ends: bigint;
10
+ used: bigint;
11
+ left: bigint;
12
+ };
13
+ export declare function capWindow(cap: Pick<MintCap, "windowStart" | "windowUsed" | "windowSecs" | "windowCap">, now: bigint): CapWindow;
14
+ export type MintCapLimits = {
15
+ maxPerOrder: bigint;
16
+ windowCap: bigint;
17
+ windowSecs: number;
18
+ };
19
+ export declare function checkMintCapLimits(limits: MintCapLimits): MintCapLimits;
20
+ export declare function findMintCapAddress(mint: Address): Promise<Address>;
21
+ export declare function buildSetMintCap(input: MintCapLimits & {
22
+ admin: TransactionSigner;
23
+ payer?: TransactionSigner;
24
+ mint: Address;
25
+ }): Promise<import("../generated/client/index.js").SetMintCapInstruction<Address<"GHFB9q4fhhqRyCoycoivdxMhFkp1aLHJk5VvroUsgrJU">, string, string, string, string, string, string, string, "GHFB9q4fhhqRyCoycoivdxMhFkp1aLHJk5VvroUsgrJU", []>>;
26
+ export declare function buildSetCapsRequired(input: {
27
+ admin: TransactionSigner;
28
+ required: boolean;
29
+ }): Promise<import("../generated/client/index.js").SetCapsRequiredInstruction<Address<"GHFB9q4fhhqRyCoycoivdxMhFkp1aLHJk5VvroUsgrJU">, string, string, string, "GHFB9q4fhhqRyCoycoivdxMhFkp1aLHJk5VvroUsgrJU", []>>;
30
+ export declare function mintCapSlot(mintCap: Address | undefined): Address;
31
+ export declare function withMintCap<T extends Instruction>(ix: T, mintCap: Address | undefined): T;
@@ -0,0 +1,73 @@
1
+ import { AccountRole, getAddressEncoder, getProgramDerivedAddress, } from "@solana/kit";
2
+ import { getMintCapDecoder, getMintCapSize, getSetCapsRequiredInstruction, getSetMintCapInstructionAsync, INTENT_ENGINE_PROGRAM_ADDRESS, MINT_CAP_DISCRIMINATOR, } from "../generated/client/index.js";
3
+ import { events } from "./builder-accounts.js";
4
+ export const MINT_CAP_VERSION = 1;
5
+ export const MIN_CAP_WINDOW_SECS = 60;
6
+ export function isMintCapData(data) {
7
+ return data.length >= getMintCapSize() && MINT_CAP_DISCRIMINATOR.every((b, i) => data[i] === b);
8
+ }
9
+ export function decodeMintCapData(data) {
10
+ if (!isMintCapData(data)) {
11
+ throw new RangeError("not a mint cap account");
12
+ }
13
+ return getMintCapDecoder().decode(data);
14
+ }
15
+ export function capWindow(cap, now) {
16
+ const ends = cap.windowStart + BigInt(cap.windowSecs);
17
+ const rolled = now >= ends;
18
+ const used = rolled ? 0n : cap.windowUsed;
19
+ return {
20
+ start: rolled ? now : cap.windowStart,
21
+ ends: rolled ? now + BigInt(cap.windowSecs) : ends,
22
+ used,
23
+ left: cap.windowCap > used ? cap.windowCap - used : 0n,
24
+ };
25
+ }
26
+ export function checkMintCapLimits(limits) {
27
+ if (limits.maxPerOrder <= 0n) {
28
+ throw new RangeError("the per-order cap must be above zero");
29
+ }
30
+ if (limits.windowCap < limits.maxPerOrder) {
31
+ throw new RangeError("the window cap must be at least the per-order cap");
32
+ }
33
+ if (!Number.isInteger(limits.windowSecs) || limits.windowSecs < MIN_CAP_WINDOW_SECS || limits.windowSecs > 0xffff_ffff) {
34
+ throw new RangeError(`the window must last ${MIN_CAP_WINDOW_SECS} to 4294967295 seconds`);
35
+ }
36
+ return limits;
37
+ }
38
+ export async function findMintCapAddress(mint) {
39
+ const [address] = await getProgramDerivedAddress({
40
+ programAddress: INTENT_ENGINE_PROGRAM_ADDRESS,
41
+ seeds: [new TextEncoder().encode("mint_cap"), getAddressEncoder().encode(mint)],
42
+ });
43
+ return address;
44
+ }
45
+ export async function buildSetMintCap(input) {
46
+ const limits = checkMintCapLimits(input);
47
+ return getSetMintCapInstructionAsync({
48
+ admin: input.admin,
49
+ payer: input.payer ?? input.admin,
50
+ mint: input.mint,
51
+ maxPerOrder: limits.maxPerOrder,
52
+ windowCap: limits.windowCap,
53
+ windowSecs: limits.windowSecs,
54
+ ...(await events()),
55
+ });
56
+ }
57
+ export async function buildSetCapsRequired(input) {
58
+ return getSetCapsRequiredInstruction({ admin: input.admin, required: input.required, ...(await events()) });
59
+ }
60
+ const MINT_CAP_FROM_END = 3;
61
+ export function mintCapSlot(mintCap) {
62
+ return mintCap ?? INTENT_ENGINE_PROGRAM_ADDRESS;
63
+ }
64
+ export function withMintCap(ix, mintCap) {
65
+ const accounts = [...(ix.accounts ?? [])];
66
+ const at = accounts.length - MINT_CAP_FROM_END;
67
+ accounts[at] =
68
+ mintCap === undefined
69
+ ? { address: INTENT_ENGINE_PROGRAM_ADDRESS, role: AccountRole.READONLY }
70
+ : { address: mintCap, role: AccountRole.WRITABLE };
71
+ return { ...ix, accounts };
72
+ }
73
+ //# sourceMappingURL=mint-caps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mint-caps.js","sourceRoot":"","sources":["../../src/mint-caps.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import { type Address, type ReadonlyUint8Array, type TransactionSigner } from "@solana/kit";
2
+ export declare const PROFILE_MAX_SKILLS = 8;
3
+ export declare const PROFILE_SKILL_LEN = 16;
4
+ export declare const PROFILE_MAX_URL_LEN = 128;
5
+ export type ProfileInput = {
6
+ skills: string[];
7
+ endpoint: string;
8
+ docUrl?: string;
9
+ docSha256?: string;
10
+ };
11
+ export type ProfileView = {
12
+ wallet: Address;
13
+ skills: string[];
14
+ endpoint: string;
15
+ docUrl: string | null;
16
+ docSha256: string | null;
17
+ updatedAt: bigint;
18
+ };
19
+ export declare function checkProfile(input: ProfileInput): ProfileInput;
20
+ export declare function profileAddress(wallet: Address): Promise<Address>;
21
+ export declare function buildCreateProfile(input: {
22
+ wallet: TransactionSigner;
23
+ } & ProfileInput): Promise<import("../generated/client/index.js").CreateProfileInstruction<Address<"GHFB9q4fhhqRyCoycoivdxMhFkp1aLHJk5VvroUsgrJU">, string, string, string, string, "GHFB9q4fhhqRyCoycoivdxMhFkp1aLHJk5VvroUsgrJU", []>>;
24
+ export declare function buildUpdateProfile(input: {
25
+ wallet: TransactionSigner;
26
+ } & ProfileInput): Promise<import("../generated/client/index.js").UpdateProfileInstruction<Address<"GHFB9q4fhhqRyCoycoivdxMhFkp1aLHJk5VvroUsgrJU">, string, string, string, "GHFB9q4fhhqRyCoycoivdxMhFkp1aLHJk5VvroUsgrJU", []>>;
27
+ export declare function buildCloseProfile(input: {
28
+ wallet: TransactionSigner;
29
+ }): Promise<import("../generated/client/index.js").CloseProfileInstruction<Address<"GHFB9q4fhhqRyCoycoivdxMhFkp1aLHJk5VvroUsgrJU">, string, string, string, "GHFB9q4fhhqRyCoycoivdxMhFkp1aLHJk5VvroUsgrJU", []>>;
30
+ export declare function profileView(data: ReadonlyUint8Array): ProfileView;
@@ -0,0 +1,71 @@
1
+ import { getBase16Decoder, getBase16Encoder } from "@solana/kit";
2
+ import { findProfilePda, getCloseProfileInstructionAsync, getCreateProfileInstructionAsync, getProfileDecoder, getProfileSize, getUpdateProfileInstructionAsync, PROFILE_DISCRIMINATOR, } from "../generated/client/index.js";
3
+ import { events } from "./builder-accounts.js";
4
+ import { IntentCoreError } from "./errors.js";
5
+ export const PROFILE_MAX_SKILLS = 8;
6
+ export const PROFILE_SKILL_LEN = 16;
7
+ export const PROFILE_MAX_URL_LEN = 128;
8
+ const SKILL = /^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/;
9
+ const URL_BODY = /^https:\/\/[\x21-\x5b\x5d-\x7e]+$/;
10
+ const SHA256 = /^[0-9a-f]{64}$/;
11
+ const ZERO_HASH = "0".repeat(64);
12
+ const validUrl = (text) => text.length <= PROFILE_MAX_URL_LEN && URL_BODY.test(text);
13
+ export function checkProfile(input) {
14
+ const { skills, endpoint, docUrl, docSha256 } = input;
15
+ const hash = docSha256?.toLowerCase();
16
+ const skillsValid = skills.length >= 1 &&
17
+ skills.length <= PROFILE_MAX_SKILLS &&
18
+ new Set(skills).size === skills.length &&
19
+ skills.every((s) => s.length <= PROFILE_SKILL_LEN && SKILL.test(s));
20
+ const docValid = (docUrl === undefined) === (hash === undefined) &&
21
+ (docUrl === undefined || validUrl(docUrl)) &&
22
+ (hash === undefined || (SHA256.test(hash) && hash !== ZERO_HASH));
23
+ if (!skillsValid || !validUrl(endpoint) || !docValid) {
24
+ throw new IntentCoreError("ProfileInvalid");
25
+ }
26
+ return { skills: [...skills], endpoint, ...(docUrl === undefined || hash === undefined ? {} : { docUrl, docSha256: hash }) };
27
+ }
28
+ function fieldsOf(input) {
29
+ const checked = checkProfile(input);
30
+ return {
31
+ skills: checked.skills,
32
+ endpoint: checked.endpoint,
33
+ docUrl: checked.docUrl ?? "",
34
+ docHash: checked.docSha256 === undefined ? new Uint8Array(32) : getBase16Encoder().encode(checked.docSha256),
35
+ };
36
+ }
37
+ export async function profileAddress(wallet) {
38
+ return (await findProfilePda({ wallet }))[0];
39
+ }
40
+ export async function buildCreateProfile(input) {
41
+ const args = fieldsOf(input);
42
+ return getCreateProfileInstructionAsync({ wallet: input.wallet, args, ...(await events()) });
43
+ }
44
+ export async function buildUpdateProfile(input) {
45
+ const args = fieldsOf(input);
46
+ return getUpdateProfileInstructionAsync({ wallet: input.wallet, args, ...(await events()) });
47
+ }
48
+ export async function buildCloseProfile(input) {
49
+ return getCloseProfileInstructionAsync({ wallet: input.wallet, ...(await events()) });
50
+ }
51
+ const ascii = (bytes) => {
52
+ const end = bytes.indexOf(0);
53
+ return new TextDecoder().decode(bytes.slice(0, end < 0 ? bytes.length : end));
54
+ };
55
+ export function profileView(data) {
56
+ if (data.length < getProfileSize() || !PROFILE_DISCRIMINATOR.every((b, i) => data[i] === b)) {
57
+ throw new RangeError("the data is not a profile account");
58
+ }
59
+ const stored = getProfileDecoder().decode(data);
60
+ const docUrl = ascii(stored.docUrl);
61
+ const docSha256 = getBase16Decoder().decode(stored.docHash).toLowerCase();
62
+ return {
63
+ wallet: stored.wallet,
64
+ skills: stored.skills.map(ascii).filter((s) => s !== ""),
65
+ endpoint: ascii(stored.endpoint),
66
+ docUrl: docUrl === "" ? null : docUrl,
67
+ docSha256: docSha256 === ZERO_HASH ? null : docSha256,
68
+ updatedAt: stored.updatedAt,
69
+ };
70
+ }
71
+ //# sourceMappingURL=profile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/profile.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,9 @@ export declare const PAUSE_CREATE = 1;
8
8
  export declare const PAUSE_FILL = 2;
9
9
  export declare const MAX_CREATE_FEE = 10000000;
10
10
  export declare const MAX_CRANK_BOUNTY = 10000000;
11
+ export declare const MAX_FEE_BPS = 100;
12
+ export declare const MAX_ATTESTED_FEE_BPS = 300;
13
+ export declare function maxFeeBpsFor(kind: number): number;
11
14
  export declare function remainingOf(intent: {
12
15
  escrowed: bigint;
13
16
  filled: bigint;
package/dist/src/state.js CHANGED
@@ -7,6 +7,11 @@ export const PAUSE_CREATE = 1;
7
7
  export const PAUSE_FILL = 2;
8
8
  export const MAX_CREATE_FEE = 10_000_000;
9
9
  export const MAX_CRANK_BOUNTY = 10_000_000;
10
+ export const MAX_FEE_BPS = 100;
11
+ export const MAX_ATTESTED_FEE_BPS = 300;
12
+ export function maxFeeBpsFor(kind) {
13
+ return kind === Kind.AttestedResult ? MAX_ATTESTED_FEE_BPS : MAX_FEE_BPS;
14
+ }
10
15
  export function remainingOf(intent) {
11
16
  if (intent.filled > intent.escrowed) {
12
17
  throw new RangeError(`an intent cannot have filled ${intent.filled} of ${intent.escrowed}`);
@@ -1 +1 @@
1
- {"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/state.ts"],"names":[],"mappings":"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"}