Skip to content
Draft
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
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ export type BridgeWrappedTokenInstruction<
TAccountOutgoingMessage extends string | AccountMeta<string> = string,
TAccountTokenProgram extends
| string
| AccountMeta<string> = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',
| AccountMeta<string> = 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb',
TAccountSystemProgram extends
| string
| AccountMeta<string> = '11111111111111111111111111111111',
Expand Down Expand Up @@ -285,7 +285,7 @@ export function getBridgeWrappedTokenInstruction<
// Resolve default values.
if (!accounts.tokenProgram.value) {
accounts.tokenProgram.value =
'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;
'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>;
}
if (!accounts.systemProgram.value) {
accounts.systemProgram.value =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ export type BridgeWrappedTokenWithBufferedCallInstruction<
TAccountOutgoingMessage extends string | AccountMeta<string> = string,
TAccountTokenProgram extends
| string
| AccountMeta<string> = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',
| AccountMeta<string> = 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb',
TAccountSystemProgram extends
| string
| AccountMeta<string> = '11111111111111111111111111111111',
Expand Down Expand Up @@ -294,7 +294,7 @@ export function getBridgeWrappedTokenWithBufferedCallInstruction<
// Resolve default values.
if (!accounts.tokenProgram.value) {
accounts.tokenProgram.value =
'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;
'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>;
}
if (!accounts.systemProgram.value) {
accounts.systemProgram.value =
Expand Down
4 changes: 2 additions & 2 deletions clients/ts/src/bridge/generated/instructions/wrapToken.ts
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ export type WrapTokenInstruction<
TAccountOutgoingMessage extends string | AccountMeta<string> = string,
TAccountTokenProgram extends
| string
| AccountMeta<string> = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',
| AccountMeta<string> = 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb',
TAccountSystemProgram extends
| string
| AccountMeta<string> = '11111111111111111111111111111111',
Expand Down Expand Up @@ -284,7 +284,7 @@ export function getWrapTokenInstruction<
// Resolve default values.
if (!accounts.tokenProgram.value) {
accounts.tokenProgram.value =
'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;
'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>;
}
if (!accounts.systemProgram.value) {
accounts.systemProgram.value =
Expand Down
22 changes: 22 additions & 0 deletions scripts/src/commands/sol/generate-client.handler.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,18 @@ import { z } from "zod";
import { logger } from "@internal/logger";
import { findGitRoot } from "@internal/utils";

const TOKEN_2022_PROGRAM_ADDRESS = "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb";

// Bridge instructions whose `token_program` is declared `Program<Token2022>` onchain. Codama
// defaults any account named `tokenProgram` to the legacy SPL Token program, which Anchor rejects
// for these, so the default has to be pinned. The `bridge_spl` instructions are intentionally
// absent: they take `Interface<TokenInterface>` and accept either program.
const TOKEN_2022_ONLY_INSTRUCTIONS = [
"wrapToken",
"bridgeWrappedToken",
"bridgeWrappedTokenWithBufferedCall",
];

export const argsSchema = z.object({
program: z
.enum(["bridge", "base-relayer"], {
Expand Down Expand Up @@ -43,6 +55,16 @@ export async function handleGenerateClient(
const idl = rootNodeFromAnchor(require(idlPath));
const codama = c.createFromRoot(idl);

codama.update(
c.setInstructionAccountDefaultValuesVisitor(
TOKEN_2022_ONLY_INSTRUCTIONS.map((instruction) => ({
instruction,
account: "tokenProgram",
defaultValue: c.publicKeyValueNode(TOKEN_2022_PROGRAM_ADDRESS),
}))
)
);

logger.info("Rendering TypeScript client...");
codama.accept(renderJavaScriptVisitor(clientOutputPath));

Expand Down
Loading