@soltracer/cpi-accounts 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,9 @@
1
+ import { PublicKey } from "@solana/web3.js";
2
+ /**
3
+ * Pyth SOL/USD push-oracle (PriceUpdateV2) on Solana mainnet-beta.
4
+ *
5
+ * Used by every utility that pays SOL fees to the platform — the admin program
6
+ * reads this feed when converting USD-denominated fee tiers into SOL.
7
+ */
8
+ export declare const PYTH_SOL_USD_FEED: PublicKey;
9
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE3C;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,WAAgE,CAAA"}
@@ -0,0 +1,9 @@
1
+ import { PublicKey } from "@solana/web3.js";
2
+ /**
3
+ * Pyth SOL/USD push-oracle (PriceUpdateV2) on Solana mainnet-beta.
4
+ *
5
+ * Used by every utility that pays SOL fees to the platform — the admin program
6
+ * reads this feed when converting USD-denominated fee tiers into SOL.
7
+ */
8
+ export const PYTH_SOL_USD_FEED = new PublicKey("7UVimffxr9ow1uXYxsr4LHAcV58mLzhmwaeKvJ1pjLiE");
9
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE3C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,SAAS,CAAC,8CAA8C,CAAC,CAAA"}
package/dist/fees.d.ts ADDED
@@ -0,0 +1,65 @@
1
+ import { PublicKey, type Connection } from "@solana/web3.js";
2
+ /**
3
+ * Caller-provided overrides for fee resolution.
4
+ *
5
+ * Passing an explicit `referralAccount` skips the per-project referral lookup
6
+ * (useful for tests, or when the caller has already cached the value).
7
+ */
8
+ export interface FeeParams {
9
+ /** Override referral account (base58 string or PublicKey). */
10
+ referralAccount?: string | PublicKey;
11
+ }
12
+ /**
13
+ * Account set required to CPI into the admin program's `collect_fee_sol` /
14
+ * `collect_fee_token` instructions.
15
+ *
16
+ * Every utility SDK builds this same shape; centralising it removes ~40 lines
17
+ * of duplicated code per utility and keeps a single migration point if the
18
+ * admin fee-CPI surface ever changes.
19
+ */
20
+ export interface FeeAccounts {
21
+ feeConfig: PublicKey;
22
+ programRegistry: PublicKey;
23
+ treasury: PublicKey;
24
+ referralAccount: PublicKey;
25
+ solUsdPriceFeed: PublicKey;
26
+ adminProgram: PublicKey;
27
+ }
28
+ export interface ResolveFeeAccountsArgs {
29
+ connection: Connection;
30
+ /** The utility's program ID (used to derive `feeConfig` + `programRegistry`). */
31
+ utilityProgramId: PublicKey;
32
+ /** Project this fee will be attributed to. Used to look up the project's referral. */
33
+ projectId: number;
34
+ fee?: FeeParams;
35
+ /**
36
+ * Optional cache lookup. Return `undefined` for a miss (forces a network
37
+ * fetch); return `null` for "no referral configured" (skip the fetch and
38
+ * use `ADMIN_PROGRAM_ID`); return a `PublicKey` for a hit.
39
+ */
40
+ referralCache?: {
41
+ get(projectId: number): PublicKey | null | undefined;
42
+ set(projectId: number, value: PublicKey | null): void;
43
+ };
44
+ }
45
+ /**
46
+ * Resolve the full fee account set for a CPI into the admin program.
47
+ *
48
+ * Replaces the duplicated `resolveFeeAccounts` private method on every utility
49
+ * client. Callers may supply a cache; otherwise the project-referral is fetched
50
+ * fresh on every call.
51
+ */
52
+ export declare function resolveFeeAccounts(args: ResolveFeeAccountsArgs): Promise<FeeAccounts>;
53
+ /**
54
+ * Per-client referral cache. Construct one per utility client to deduplicate
55
+ * project-referral lookups across calls.
56
+ */
57
+ export declare class ProjectReferralCache {
58
+ private inner;
59
+ get(projectId: number): PublicKey | null | undefined;
60
+ set(projectId: number, value: PublicKey | null): void;
61
+ /** Drop a single project's cached referral (call when the project rotates). */
62
+ invalidate(projectId: number): void;
63
+ clear(): void;
64
+ }
65
+ //# sourceMappingURL=fees.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fees.d.ts","sourceRoot":"","sources":["../src/fees.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAU5D;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACxB,8DAA8D;IAC9D,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACrC;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,SAAS,CAAA;IACpB,eAAe,EAAE,SAAS,CAAA;IAC1B,QAAQ,EAAE,SAAS,CAAA;IACnB,eAAe,EAAE,SAAS,CAAA;IAC1B,eAAe,EAAE,SAAS,CAAA;IAC1B,YAAY,EAAE,SAAS,CAAA;CACxB;AAED,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,UAAU,CAAA;IACtB,iFAAiF;IACjF,gBAAgB,EAAE,SAAS,CAAA;IAC3B,sFAAsF;IACtF,SAAS,EAAE,MAAM,CAAA;IACjB,GAAG,CAAC,EAAE,SAAS,CAAA;IACf;;;;OAIG;IACH,aAAa,CAAC,EAAE;QACd,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,CAAA;QACpD,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI,GAAG,IAAI,CAAA;KACtD,CAAA;CACF;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,WAAW,CAAC,CAqC3F;AAED;;;GAGG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,KAAK,CAAsC;IAEnD,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS;IAIpD,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI,GAAG,IAAI;IAIrD,+EAA+E;IAC/E,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAInC,KAAK,IAAI,IAAI;CAGd"}
package/dist/fees.js ADDED
@@ -0,0 +1,68 @@
1
+ import { PublicKey } from "@solana/web3.js";
2
+ import { ADMIN_PROGRAM_ID, getFeeConfigPda, getProgramRegistryPda, getTreasuryPda, } from "@soltracer/core";
3
+ import { fetchProjectReferral } from "./project-referral";
4
+ import { PYTH_SOL_USD_FEED } from "./constants";
5
+ /**
6
+ * Resolve the full fee account set for a CPI into the admin program.
7
+ *
8
+ * Replaces the duplicated `resolveFeeAccounts` private method on every utility
9
+ * client. Callers may supply a cache; otherwise the project-referral is fetched
10
+ * fresh on every call.
11
+ */
12
+ export async function resolveFeeAccounts(args) {
13
+ const { connection, utilityProgramId, projectId, fee, referralCache } = args;
14
+ const [feeConfig] = getFeeConfigPda(utilityProgramId);
15
+ const [programRegistry] = getProgramRegistryPda(utilityProgramId);
16
+ const [treasury] = getTreasuryPda();
17
+ let referralAccount = ADMIN_PROGRAM_ID;
18
+ if (fee?.referralAccount) {
19
+ try {
20
+ referralAccount =
21
+ fee.referralAccount instanceof PublicKey
22
+ ? fee.referralAccount
23
+ : new PublicKey(fee.referralAccount);
24
+ }
25
+ catch {
26
+ // Fall through to default — caller passed an unparseable string.
27
+ }
28
+ }
29
+ else {
30
+ let cached = referralCache?.get(projectId);
31
+ if (cached === undefined) {
32
+ cached = await fetchProjectReferral(connection, projectId);
33
+ referralCache?.set(projectId, cached);
34
+ }
35
+ if (cached) {
36
+ referralAccount = cached;
37
+ }
38
+ }
39
+ return {
40
+ feeConfig,
41
+ programRegistry,
42
+ treasury,
43
+ referralAccount,
44
+ solUsdPriceFeed: PYTH_SOL_USD_FEED,
45
+ adminProgram: ADMIN_PROGRAM_ID,
46
+ };
47
+ }
48
+ /**
49
+ * Per-client referral cache. Construct one per utility client to deduplicate
50
+ * project-referral lookups across calls.
51
+ */
52
+ export class ProjectReferralCache {
53
+ inner = new Map();
54
+ get(projectId) {
55
+ return this.inner.has(projectId) ? this.inner.get(projectId) : undefined;
56
+ }
57
+ set(projectId, value) {
58
+ this.inner.set(projectId, value);
59
+ }
60
+ /** Drop a single project's cached referral (call when the project rotates). */
61
+ invalidate(projectId) {
62
+ this.inner.delete(projectId);
63
+ }
64
+ clear() {
65
+ this.inner.clear();
66
+ }
67
+ }
68
+ //# sourceMappingURL=fees.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fees.js","sourceRoot":"","sources":["../src/fees.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAmB,MAAM,iBAAiB,CAAA;AAC5D,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACrB,cAAc,GACf,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAgD/C;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAA4B;IACnE,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAE,SAAS,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,IAAI,CAAA;IAE5E,MAAM,CAAC,SAAS,CAAC,GAAG,eAAe,CAAC,gBAAgB,CAAC,CAAA;IACrD,MAAM,CAAC,eAAe,CAAC,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,CAAA;IACjE,MAAM,CAAC,QAAQ,CAAC,GAAG,cAAc,EAAE,CAAA;IAEnC,IAAI,eAAe,GAAc,gBAAgB,CAAA;IAEjD,IAAI,GAAG,EAAE,eAAe,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,eAAe;gBACb,GAAG,CAAC,eAAe,YAAY,SAAS;oBACtC,CAAC,CAAC,GAAG,CAAC,eAAe;oBACrB,CAAC,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;QAC1C,CAAC;QAAC,MAAM,CAAC;YACP,iEAAiE;QACnE,CAAC;IACH,CAAC;SAAM,CAAC;QACN,IAAI,MAAM,GAAG,aAAa,EAAE,GAAG,CAAC,SAAS,CAAC,CAAA;QAC1C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,GAAG,MAAM,oBAAoB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;YAC1D,aAAa,EAAE,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;QACvC,CAAC;QACD,IAAI,MAAM,EAAE,CAAC;YACX,eAAe,GAAG,MAAM,CAAA;QAC1B,CAAC;IACH,CAAC;IAED,OAAO;QACL,SAAS;QACT,eAAe;QACf,QAAQ;QACR,eAAe;QACf,eAAe,EAAE,iBAAiB;QAClC,YAAY,EAAE,gBAAgB;KAC/B,CAAA;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,OAAO,oBAAoB;IACvB,KAAK,GAAG,IAAI,GAAG,EAA4B,CAAA;IAEnD,GAAG,CAAC,SAAiB;QACnB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAC1E,CAAC;IAED,GAAG,CAAC,SAAiB,EAAE,KAAuB;QAC5C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;IAClC,CAAC;IAED,+EAA+E;IAC/E,UAAU,CAAC,SAAiB;QAC1B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IAC9B,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;IACpB,CAAC;CACF"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * `@soltracer/cpi-accounts` — shared account builders for utility programs.
3
+ *
4
+ * Utility SDKs use this package to construct the cross-program account sets
5
+ * they hand to admin / project-management / user-management CPIs, so that
6
+ * utility consumers never need to depend on the internal `@soltracer/admin`
7
+ * package.
8
+ *
9
+ * Re-exports the relevant PDA derivers from `@soltracer/core` so callers only
10
+ * need a single import.
11
+ */
12
+ export { PYTH_SOL_USD_FEED } from "./constants";
13
+ export { fetchProjectReferral } from "./project-referral";
14
+ export { resolveFeeAccounts, ProjectReferralCache, type FeeAccounts, type FeeParams, type ResolveFeeAccountsArgs, } from "./fees";
15
+ export { getUtilityGateAccounts, type UtilityGateAccounts } from "./utility-gate";
16
+ export { ADMIN_PROGRAM_ID, PROJECT_MANAGEMENT_PROGRAM_ID, USER_MANAGEMENT_PROGRAM_ID, SUBSCRIPTIONS_PROGRAM_ID, getFeeConfigPda, getPlatformStatePda, getProgramRegistryPda, getProjectPda, getProjectWalletPda, getReferralAccountPda, getTreasuryPda, getUserProfilePda, getUserStatsPda, getUtilityConfigPda, getUtilityDefinitionPda, } from "@soltracer/core";
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,sBAAsB,GAC5B,MAAM,QAAQ,CAAA;AACf,OAAO,EAAE,sBAAsB,EAAE,KAAK,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAIjF,OAAO,EACL,gBAAgB,EAChB,6BAA6B,EAC7B,0BAA0B,EAC1B,wBAAwB,EACxB,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,aAAa,EACb,mBAAmB,EACnB,qBAAqB,EACrB,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,iBAAiB,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,19 @@
1
+ /**
2
+ * `@soltracer/cpi-accounts` — shared account builders for utility programs.
3
+ *
4
+ * Utility SDKs use this package to construct the cross-program account sets
5
+ * they hand to admin / project-management / user-management CPIs, so that
6
+ * utility consumers never need to depend on the internal `@soltracer/admin`
7
+ * package.
8
+ *
9
+ * Re-exports the relevant PDA derivers from `@soltracer/core` so callers only
10
+ * need a single import.
11
+ */
12
+ export { PYTH_SOL_USD_FEED } from "./constants";
13
+ export { fetchProjectReferral } from "./project-referral";
14
+ export { resolveFeeAccounts, ProjectReferralCache, } from "./fees";
15
+ export { getUtilityGateAccounts } from "./utility-gate";
16
+ // Re-export PDA derivers + program IDs from core so utility SDKs only depend
17
+ // on `@soltracer/cpi-accounts` (not directly on `@soltracer/admin`).
18
+ export { ADMIN_PROGRAM_ID, PROJECT_MANAGEMENT_PROGRAM_ID, USER_MANAGEMENT_PROGRAM_ID, SUBSCRIPTIONS_PROGRAM_ID, getFeeConfigPda, getPlatformStatePda, getProgramRegistryPda, getProjectPda, getProjectWalletPda, getReferralAccountPda, getTreasuryPda, getUserProfilePda, getUserStatsPda, getUtilityConfigPda, getUtilityDefinitionPda, } from "@soltracer/core";
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,EACL,kBAAkB,EAClB,oBAAoB,GAIrB,MAAM,QAAQ,CAAA;AACf,OAAO,EAAE,sBAAsB,EAA4B,MAAM,gBAAgB,CAAA;AAEjF,6EAA6E;AAC7E,qEAAqE;AACrE,OAAO,EACL,gBAAgB,EAChB,6BAA6B,EAC7B,0BAA0B,EAC1B,wBAAwB,EACxB,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,aAAa,EACb,mBAAmB,EACnB,qBAAqB,EACrB,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,iBAAiB,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { PublicKey, type Connection } from "@solana/web3.js";
2
+ /**
3
+ * Fetch a project's referral pubkey from chain. Returns null if no referral is
4
+ * configured or the project does not exist.
5
+ *
6
+ * Uses Anchor's `BorshAccountsCoder` rather than hand-rolled byte offsets so
7
+ * that the layout stays in sync with the on-chain `Project` struct
8
+ * automatically when the IDL is regenerated.
9
+ */
10
+ export declare function fetchProjectReferral(connection: Connection, projectId: number): Promise<PublicKey | null>;
11
+ //# sourceMappingURL=project-referral.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-referral.d.ts","sourceRoot":"","sources":["../src/project-referral.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAU5D;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAM3B"}
@@ -0,0 +1,22 @@
1
+ import { BorshAccountsCoder } from "@coral-xyz/anchor";
2
+ import { PublicKey } from "@solana/web3.js";
3
+ import { getProjectPda } from "@soltracer/core";
4
+ import { ProjectManagementIDL } from "@soltracer/project-management";
5
+ const projectAccountsCoder = new BorshAccountsCoder(ProjectManagementIDL);
6
+ /**
7
+ * Fetch a project's referral pubkey from chain. Returns null if no referral is
8
+ * configured or the project does not exist.
9
+ *
10
+ * Uses Anchor's `BorshAccountsCoder` rather than hand-rolled byte offsets so
11
+ * that the layout stays in sync with the on-chain `Project` struct
12
+ * automatically when the IDL is regenerated.
13
+ */
14
+ export async function fetchProjectReferral(connection, projectId) {
15
+ const [pda] = getProjectPda(projectId);
16
+ const info = await connection.getAccountInfo(pda);
17
+ if (!info)
18
+ return null;
19
+ const decoded = projectAccountsCoder.decode("project", Buffer.from(info.data));
20
+ return decoded.referral.equals(PublicKey.default) ? null : decoded.referral;
21
+ }
22
+ //# sourceMappingURL=project-referral.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-referral.js","sourceRoot":"","sources":["../src/project-referral.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAEtD,OAAO,EAAE,SAAS,EAAmB,MAAM,iBAAiB,CAAA;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAA;AAEpE,MAAM,oBAAoB,GAAG,IAAI,kBAAkB,CAAC,oBAAsC,CAAC,CAAA;AAM3F;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,UAAsB,EACtB,SAAiB;IAEjB,MAAM,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,SAAS,CAAC,CAAA;IACtC,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,CAAA;IACjD,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAA;IACtB,MAAM,OAAO,GAAG,oBAAoB,CAAC,MAAM,CAAiB,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IAC9F,OAAO,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAA;AAC7E,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { PublicKey } from "@solana/web3.js";
2
+ /**
3
+ * Account set every utility uses to gate an instruction against the project's
4
+ * subscription / pause state. The `utility_config` PDA's `is_enabled && !is_paused`
5
+ * flags are checked on-chain via `cpi_interfaces::require_utility_active`.
6
+ */
7
+ export interface UtilityGateAccounts {
8
+ project: PublicKey;
9
+ utilityConfig: PublicKey;
10
+ }
11
+ /** Build the standard `(project, utility_config)` pair for a utility CPI. */
12
+ export declare function getUtilityGateAccounts(projectId: number, utilityProgramId: PublicKey): UtilityGateAccounts;
13
+ //# sourceMappingURL=utility-gate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utility-gate.d.ts","sourceRoot":"","sources":["../src/utility-gate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAGhD;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,SAAS,CAAA;IAClB,aAAa,EAAE,SAAS,CAAA;CACzB;AAED,6EAA6E;AAC7E,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,EACjB,gBAAgB,EAAE,SAAS,GAC1B,mBAAmB,CAIrB"}
@@ -0,0 +1,8 @@
1
+ import { getProjectPda, getUtilityConfigPda } from "@soltracer/core";
2
+ /** Build the standard `(project, utility_config)` pair for a utility CPI. */
3
+ export function getUtilityGateAccounts(projectId, utilityProgramId) {
4
+ const [project] = getProjectPda(projectId);
5
+ const [utilityConfig] = getUtilityConfigPda(projectId, utilityProgramId);
6
+ return { project, utilityConfig };
7
+ }
8
+ //# sourceMappingURL=utility-gate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utility-gate.js","sourceRoot":"","sources":["../src/utility-gate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAYpE,6EAA6E;AAC7E,MAAM,UAAU,sBAAsB,CACpC,SAAiB,EACjB,gBAA2B;IAE3B,MAAM,CAAC,OAAO,CAAC,GAAG,aAAa,CAAC,SAAS,CAAC,CAAA;IAC1C,MAAM,CAAC,aAAa,CAAC,GAAG,mBAAmB,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAA;IACxE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,CAAA;AACnC,CAAC"}
package/package.json ADDED
@@ -0,0 +1,33 @@
1
+ {
2
+ "name": "@soltracer/cpi-accounts",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "import": "./dist/index.js"
11
+ }
12
+ },
13
+ "dependencies": {
14
+ "@soltracer/core": "0.2.0",
15
+ "@soltracer/project-management": "0.1.5"
16
+ },
17
+ "devDependencies": {
18
+ "typescript": "^5.7.0"
19
+ },
20
+ "files": [
21
+ "dist"
22
+ ],
23
+ "peerDependencies": {
24
+ "@coral-xyz/anchor": "^0.32.1",
25
+ "@solana/web3.js": "^1.98.4"
26
+ },
27
+ "license": "MIT",
28
+ "scripts": {
29
+ "build": "tsc -p tsconfig.build.json",
30
+ "clean": "rm -rf dist",
31
+ "type-check": "tsc --noEmit"
32
+ }
33
+ }