Open + record + close subscription
buildOpenSubscriptionIxBuild the IX to open or renew a subscription. SPL transfer happens in the same tx.
function buildOpenSubscriptionIx(params: {
subscriber: PublicKey;
offering: PublicKey;
provider: PublicKey;
bondMint: PublicKey;
subscriberTokenAccount: PublicKey;
providerTokenAccount: PublicKey;
slotId: number;
durationTier: DurationTier;
paidAtoms: bigint;
}): { ix: TransactionInstruction; subscriptionPda: PublicKey };buildRecordCallIxBump the informational call counter. Permissionless crank.
function buildRecordCallIx(
subscriptionPda: PublicKey,
): TransactionInstruction;buildCloseSubscriptionIxClose an expired subscription after the 7-day grace.
function buildCloseSubscriptionIx(args: {
subscriber: PublicKey;
subscriptionPda: PublicKey;
}): TransactionInstruction;fetchSubscriptionRead and decode a Subscription PDA.
function fetchSubscription(
conn: Connection,
subscriber: PublicKey,
offering: PublicKey,
): Promise<FetchedSubscription | null>;isActivePure-function active check against window_end.
function isActive(
sub: { windowEnd: bigint } | null,
nowSec?: number,
): boolean;DURATION_TIERTier constants matching the program's match arms.
const DURATION_TIER = {
d7: 0, d15: 1, d30: 2, d90: 3,
} as const;