@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.
- package/dist/constants.d.ts +9 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +9 -0
- package/dist/constants.js.map +1 -0
- package/dist/fees.d.ts +65 -0
- package/dist/fees.d.ts.map +1 -0
- package/dist/fees.js +68 -0
- package/dist/fees.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/project-referral.d.ts +11 -0
- package/dist/project-referral.d.ts.map +1 -0
- package/dist/project-referral.js +22 -0
- package/dist/project-referral.js.map +1 -0
- package/dist/utility-gate.d.ts +13 -0
- package/dist/utility-gate.d.ts.map +1 -0
- package/dist/utility-gate.js +8 -0
- package/dist/utility-gate.js.map +1 -0
- package/package.json +33 -0
|
@@ -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
|
package/dist/fees.js.map
ADDED
|
@@ -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"}
|
package/dist/index.d.ts
ADDED
|
@@ -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
|
+
}
|