Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 10 additions & 1 deletion dist/abi/nft.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,16 @@
* Mint authority : ["mint_authority"]
*/
import { PublicKey } from "@solana/web3.js";
/** The standalone percolator-nft program (TransferHook + mint authority). */
/**
* The standalone percolator-nft program (TransferHook + mint authority).
*
* Derived from `PROGRAM_IDS_V17.nft` rather than carrying its own literal, so this constant
* and `program-ids.ts` cannot drift apart. They previously did: this defaulted to the MAINNET
* address while every other id in the SDK is devnet, so any consumer importing it built
* transactions against a program that does not exist on devnet and failed late with
* "Account not found on-chain". The frontend hit exactly that and had to define its own
* constant to work around it.
*/
export declare const NFT_PROGRAM_ID: PublicKey;
export declare function getNftProgramId(): PublicKey;
export declare const NFT_IX_TAG: {
Expand Down
13 changes: 7 additions & 6 deletions dist/index.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion dist/index.js.map

Large diffs are not rendered by default.

13 changes: 10 additions & 3 deletions dist/solana/stake.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,16 @@ export { TOKEN_2022_PROGRAM_ID };
* new integrations) and already runs the ADOPTED `percolator-stake` lineage this
* module targets — see the module doc above.
*
* mainnet: UNVERIFIED — no confirmed mainnet stake/vault deployment found in any
* v17 planning doc (Percolator mainnet is still in prep). Do not treat this as ground
* truth; prefer the STAKE_PROGRAM_ID env override on mainnet until DevOps confirms.
* mainnet: UNVERIFIED as *ours* — no confirmed mainnet stake/vault deployment exists
* in any v17 planning doc (Percolator mainnet is still in prep). Do not treat this as
* ground truth; prefer the STAKE_PROGRAM_ID env override on mainnet until DevOps
* confirms.
*
* IMPORTANT: "unverified" does NOT mean "inert". Checked against mainnet RPC on
* 2026-08-16, DC5fovFQD5SZYsetwvEqd4Wi4PFY1Yfnc669VMe6oa7F is a LIVE, executable
* BPFLoaderUpgradeable program. That is precisely why getStakeProgramId() must not
* silently default to mainnet: an unconfigured browser caller would have resolved to
* a real, executing mainnet program rather than failing safe.
*/
export declare const STAKE_PROGRAM_IDS: {
readonly devnet: "GCHhcgwPyrai8SWHEVWw3odedguFXEtJobNnWSfWBCU3";
Expand Down
17 changes: 13 additions & 4 deletions src/abi/nft.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
*/

import { PublicKey } from "@solana/web3.js";
import { PROGRAM_IDS_V17 } from "../config/program-ids.js";
import { safeEnv } from "../config/program-ids.js";

// ---------------------------------------------------------------------------
Expand All @@ -25,6 +26,7 @@ import { safeEnv } from "../config/program-ids.js";
/** Allowlist of known NFT program addresses. */
const KNOWN_NFT_PROGRAM_IDS = new Set([
"FqhKJT9gtScjrmfUuRMjeg7cXNpif1fqsy5Jh65tJmTS", // mainnet
PROGRAM_IDS_V17.nft, // v17 devnet — the default below
]);

const NFT_PROGRAM_OVERRIDE = safeEnv("NFT_PROGRAM_ID");
Expand All @@ -36,10 +38,17 @@ if (NFT_PROGRAM_OVERRIDE !== undefined && !KNOWN_NFT_PROGRAM_IDS.has(NFT_PROGRAM
);
}

/** The standalone percolator-nft program (TransferHook + mint authority). */
export const NFT_PROGRAM_ID = new PublicKey(
NFT_PROGRAM_OVERRIDE ?? "FqhKJT9gtScjrmfUuRMjeg7cXNpif1fqsy5Jh65tJmTS",
);
/**
* The standalone percolator-nft program (TransferHook + mint authority).
*
* Derived from `PROGRAM_IDS_V17.nft` rather than carrying its own literal, so this constant
* and `program-ids.ts` cannot drift apart. They previously did: this defaulted to the MAINNET
* address while every other id in the SDK is devnet, so any consumer importing it built
* transactions against a program that does not exist on devnet and failed late with
* "Account not found on-chain". The frontend hit exactly that and had to define its own
* constant to work around it.
*/
export const NFT_PROGRAM_ID = new PublicKey(NFT_PROGRAM_OVERRIDE ?? PROGRAM_IDS_V17.nft);

export function getNftProgramId(): PublicKey {
return NFT_PROGRAM_ID;
Expand Down
Loading