Socket
Socket
Sign inDemoInstall

@solana/spl-token

Package Overview
Dependencies
Maintainers
14
Versions
46
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@solana/spl-token - npm Package Compare versions

Comparing version 0.3.4 to 0.3.5

4

lib/cjs/actions/createMint.js

@@ -15,3 +15,3 @@ "use strict";

const constants_js_1 = require("../constants.js");
const initializeMint_js_1 = require("../instructions/initializeMint.js");
const initializeMint2_js_1 = require("../instructions/initializeMint2.js");
const mint_js_1 = require("../state/mint.js");

@@ -41,3 +41,3 @@ /**

programId,
}), (0, initializeMint_js_1.createInitializeMintInstruction)(keypair.publicKey, decimals, mintAuthority, freezeAuthority, programId));
}), (0, initializeMint2_js_1.createInitializeMint2Instruction)(keypair.publicKey, decimals, mintAuthority, freezeAuthority, programId));
yield (0, web3_js_1.sendAndConfirmTransaction)(connection, transaction, [payer, keypair], confirmOptions);

@@ -44,0 +44,0 @@ return keypair.publicKey;

@@ -26,3 +26,2 @@ "use strict";

{ pubkey: programId, isSigner: false, isWritable: false },
{ pubkey: web3_js_1.SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false },
];

@@ -29,0 +28,0 @@ return new web3_js_1.TransactionInstruction({

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.isUiamountToAmountInstruction = exports.isAmountToUiAmountInstruction = exports.isInitializeAccount3Instruction = exports.isSyncNativeInstruction = exports.isInitializeAccount2Instruction = exports.isBurnCheckedInstruction = exports.isMintToCheckedInstruction = exports.isApproveCheckedInstruction = exports.isTransferCheckedInstruction = exports.isThawAccountInstruction = exports.isFreezeAccountInstruction = exports.isCloseAccountInstruction = exports.isBurnInstruction = exports.isMintToInstruction = exports.isSetAuthorityInstruction = exports.isRevokeInstruction = exports.isApproveInstruction = exports.isTransferInstruction = exports.isInitializeMultisigInstruction = exports.isInitializeAccountInstruction = exports.isInitializeMintInstruction = exports.decodeInstruction = void 0;
exports.isUiamountToAmountInstruction = exports.isAmountToUiAmountInstruction = exports.isInitializeMint2Instruction = exports.isInitializeAccount3Instruction = exports.isSyncNativeInstruction = exports.isInitializeAccount2Instruction = exports.isBurnCheckedInstruction = exports.isMintToCheckedInstruction = exports.isApproveCheckedInstruction = exports.isTransferCheckedInstruction = exports.isThawAccountInstruction = exports.isFreezeAccountInstruction = exports.isCloseAccountInstruction = exports.isBurnInstruction = exports.isMintToInstruction = exports.isSetAuthorityInstruction = exports.isRevokeInstruction = exports.isApproveInstruction = exports.isTransferInstruction = exports.isInitializeMultisigInstruction = exports.isInitializeAccountInstruction = exports.isInitializeMintInstruction = exports.decodeInstruction = void 0;
const buffer_layout_1 = require("@solana/buffer-layout");

@@ -18,2 +18,3 @@ const constants_js_1 = require("../constants.js");

const initializeMint_js_1 = require("./initializeMint.js");
const initializeMint2_js_1 = require("./initializeMint2.js");
const initializeMultisig_js_1 = require("./initializeMultisig.js");

@@ -71,2 +72,6 @@ const mintTo_js_1 = require("./mintTo.js");

return (0, syncNative_js_1.decodeSyncNativeInstruction)(instruction, programId);
if (type === types_js_1.TokenInstruction.InitializeAccount3)
return (0, initializeAccount3_js_1.decodeInitializeAccount3Instruction)(instruction, programId);
if (type === types_js_1.TokenInstruction.InitializeMint2)
return (0, initializeMint2_js_1.decodeInitializeMint2Instruction)(instruction, programId);
if (type === types_js_1.TokenInstruction.AmountToUiAmount)

@@ -77,10 +82,4 @@ return (0, amountToUiAmount_js_1.decodeAmountToUiAmountInstruction)(instruction, programId);

// TODO: implement
if (type === types_js_1.TokenInstruction.InitializeAccount3)
return (0, initializeAccount3_js_1.decodeInitializeAccount3Instruction)(instruction, programId);
// TODO: implement
if (type === types_js_1.TokenInstruction.InitializeMultisig2)
throw new errors_js_1.TokenInvalidInstructionTypeError();
// TODO: implement
if (type === types_js_1.TokenInstruction.InitializeMint2)
throw new errors_js_1.TokenInvalidInstructionTypeError();
throw new errors_js_1.TokenInvalidInstructionTypeError();

@@ -184,3 +183,14 @@ }

exports.isInitializeAccount3Instruction = isInitializeAccount3Instruction;
/** TODO: docs, implement */
// export function isInitializeMultisig2Instruction(
// decoded: DecodedInstruction
// ): decoded is DecodedInitializeMultisig2Instruction {
// return decoded.data.instruction === TokenInstruction.InitializeMultisig2;
// }
/** TODO: docs */
function isInitializeMint2Instruction(decoded) {
return decoded.data.instruction === types_js_1.TokenInstruction.InitializeMint2;
}
exports.isInitializeMint2Instruction = isInitializeMint2Instruction;
/** TODO: docs */
function isAmountToUiAmountInstruction(decoded) {

@@ -195,14 +205,2 @@ return decoded.data.instruction === types_js_1.TokenInstruction.AmountToUiAmount;

exports.isUiamountToAmountInstruction = isUiamountToAmountInstruction;
/** TODO: docs, implement */
// export function isInitializeMultisig2Instruction(
// decoded: DecodedInstruction
// ): decoded is DecodedInitializeMultisig2Instruction {
// return decoded.data.instruction === TokenInstruction.InitializeMultisig2;
// }
/** TODO: docs, implement */
// export function isInitializeMint2Instruction(
// decoded: DecodedInstruction
// ): decoded is DecodedInitializeMint2Instruction {
// return decoded.data.instruction === TokenInstruction.InitializeMint2;
// }
//# sourceMappingURL=decode.js.map
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.decodeInitializeMint2InstructionUnchecked = exports.decodeInitializeMint2Instruction = exports.createInitializeMint2Instruction = exports.initializeMint2InstructionData = void 0;
const buffer_layout_1 = require("@solana/buffer-layout");
const buffer_layout_utils_1 = require("@solana/buffer-layout-utils");
const web3_js_1 = require("@solana/web3.js");
const constants_js_1 = require("../constants.js");
const errors_js_1 = require("../errors.js");
const types_js_1 = require("./types.js");
/** TODO: docs */
exports.initializeMint2InstructionData = (0, buffer_layout_1.struct)([
(0, buffer_layout_1.u8)('instruction'),
(0, buffer_layout_1.u8)('decimals'),
(0, buffer_layout_utils_1.publicKey)('mintAuthority'),
(0, buffer_layout_1.u8)('freezeAuthorityOption'),
(0, buffer_layout_utils_1.publicKey)('freezeAuthority'),
]);
/**
* Construct an InitializeMint2 instruction
*
* @param mint Token mint account
* @param decimals Number of decimals in token account amounts
* @param mintAuthority Minting authority
* @param freezeAuthority Optional authority that can freeze token accounts
* @param programId SPL Token program account
*
* @return Instruction to add to a transaction
*/
function createInitializeMint2Instruction(mint, decimals, mintAuthority, freezeAuthority, programId = constants_js_1.TOKEN_PROGRAM_ID) {
const keys = [{ pubkey: mint, isSigner: false, isWritable: true }];
const data = Buffer.alloc(exports.initializeMint2InstructionData.span);
exports.initializeMint2InstructionData.encode({
instruction: types_js_1.TokenInstruction.InitializeMint2,
decimals,
mintAuthority,
freezeAuthorityOption: freezeAuthority ? 1 : 0,
freezeAuthority: freezeAuthority || new web3_js_1.PublicKey(0),
}, data);
return new web3_js_1.TransactionInstruction({ keys, programId, data });
}
exports.createInitializeMint2Instruction = createInitializeMint2Instruction;
/**
* Decode an InitializeMint2 instruction and validate it
*
* @param instruction Transaction instruction to decode
* @param programId SPL Token program account
*
* @return Decoded, valid instruction
*/
function decodeInitializeMint2Instruction(instruction, programId = constants_js_1.TOKEN_PROGRAM_ID) {
if (!instruction.programId.equals(programId))
throw new errors_js_1.TokenInvalidInstructionProgramError();
if (instruction.data.length !== exports.initializeMint2InstructionData.span)
throw new errors_js_1.TokenInvalidInstructionDataError();
const { keys: { mint }, data, } = decodeInitializeMint2InstructionUnchecked(instruction);
if (data.instruction !== types_js_1.TokenInstruction.InitializeMint2)
throw new errors_js_1.TokenInvalidInstructionTypeError();
if (!mint)
throw new errors_js_1.TokenInvalidInstructionKeysError();
return {
programId,
keys: {
mint,
},
data,
};
}
exports.decodeInitializeMint2Instruction = decodeInitializeMint2Instruction;
/**
* Decode an InitializeMint2 instruction without validating it
*
* @param instruction Transaction instruction to decode
*
* @return Decoded, non-validated instruction
*/
function decodeInitializeMint2InstructionUnchecked({ programId, keys: [mint], data, }) {
const { instruction, decimals, mintAuthority, freezeAuthorityOption, freezeAuthority } = exports.initializeMint2InstructionData.decode(data);
return {
programId,
keys: {
mint,
},
data: {
instruction,
decimals,
mintAuthority,
freezeAuthority: freezeAuthorityOption ? freezeAuthority : null,
},
};
}
exports.decodeInitializeMint2InstructionUnchecked = decodeInitializeMint2InstructionUnchecked;
//# sourceMappingURL=initializeMint2.js.map
import { Keypair, sendAndConfirmTransaction, SystemProgram, Transaction } from '@solana/web3.js';
import { TOKEN_PROGRAM_ID } from '../constants.js';
import { createInitializeMintInstruction } from '../instructions/initializeMint.js';
import { createInitializeMint2Instruction } from '../instructions/initializeMint2.js';
import { getMinimumBalanceForRentExemptMint, MINT_SIZE } from '../state/mint.js';

@@ -27,3 +27,3 @@ /**

programId,
}), createInitializeMintInstruction(keypair.publicKey, decimals, mintAuthority, freezeAuthority, programId));
}), createInitializeMint2Instruction(keypair.publicKey, decimals, mintAuthority, freezeAuthority, programId));
await sendAndConfirmTransaction(connection, transaction, [payer, keypair], confirmOptions);

@@ -30,0 +30,0 @@ return keypair.publicKey;

@@ -1,2 +0,2 @@

import { SystemProgram, SYSVAR_RENT_PUBKEY, TransactionInstruction } from '@solana/web3.js';
import { SystemProgram, TransactionInstruction } from '@solana/web3.js';
import { ASSOCIATED_TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID } from '../constants.js';

@@ -23,3 +23,2 @@ /**

{ pubkey: programId, isSigner: false, isWritable: false },
{ pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false },
];

@@ -26,0 +25,0 @@ return new TransactionInstruction({

@@ -15,2 +15,3 @@ import { u8 } from '@solana/buffer-layout';

import { decodeInitializeMintInstruction } from './initializeMint.js';
import { decodeInitializeMint2Instruction } from './initializeMint2.js';
import { decodeInitializeMultisigInstruction } from './initializeMultisig.js';

@@ -68,2 +69,6 @@ import { decodeMintToInstruction } from './mintTo.js';

return decodeSyncNativeInstruction(instruction, programId);
if (type === TokenInstruction.InitializeAccount3)
return decodeInitializeAccount3Instruction(instruction, programId);
if (type === TokenInstruction.InitializeMint2)
return decodeInitializeMint2Instruction(instruction, programId);
if (type === TokenInstruction.AmountToUiAmount)

@@ -74,10 +79,4 @@ return decodeAmountToUiAmountInstruction(instruction, programId);

// TODO: implement
if (type === TokenInstruction.InitializeAccount3)
return decodeInitializeAccount3Instruction(instruction, programId);
// TODO: implement
if (type === TokenInstruction.InitializeMultisig2)
throw new TokenInvalidInstructionTypeError();
// TODO: implement
if (type === TokenInstruction.InitializeMint2)
throw new TokenInvalidInstructionTypeError();
throw new TokenInvalidInstructionTypeError();

@@ -161,3 +160,13 @@ }

}
/** TODO: docs, implement */
// export function isInitializeMultisig2Instruction(
// decoded: DecodedInstruction
// ): decoded is DecodedInitializeMultisig2Instruction {
// return decoded.data.instruction === TokenInstruction.InitializeMultisig2;
// }
/** TODO: docs */
export function isInitializeMint2Instruction(decoded) {
return decoded.data.instruction === TokenInstruction.InitializeMint2;
}
/** TODO: docs */
export function isAmountToUiAmountInstruction(decoded) {

@@ -170,14 +179,2 @@ return decoded.data.instruction === TokenInstruction.AmountToUiAmount;

}
/** TODO: docs, implement */
// export function isInitializeMultisig2Instruction(
// decoded: DecodedInstruction
// ): decoded is DecodedInitializeMultisig2Instruction {
// return decoded.data.instruction === TokenInstruction.InitializeMultisig2;
// }
/** TODO: docs, implement */
// export function isInitializeMint2Instruction(
// decoded: DecodedInstruction
// ): decoded is DecodedInitializeMint2Instruction {
// return decoded.data.instruction === TokenInstruction.InitializeMint2;
// }
//# sourceMappingURL=decode.js.map

@@ -1,2 +0,86 @@

export {};
import { struct, u8 } from '@solana/buffer-layout';
import { publicKey } from '@solana/buffer-layout-utils';
import { PublicKey, TransactionInstruction } from '@solana/web3.js';
import { TOKEN_PROGRAM_ID } from '../constants.js';
import { TokenInvalidInstructionDataError, TokenInvalidInstructionKeysError, TokenInvalidInstructionProgramError, TokenInvalidInstructionTypeError, } from '../errors.js';
import { TokenInstruction } from './types.js';
/** TODO: docs */
export const initializeMint2InstructionData = struct([
u8('instruction'),
u8('decimals'),
publicKey('mintAuthority'),
u8('freezeAuthorityOption'),
publicKey('freezeAuthority'),
]);
/**
* Construct an InitializeMint2 instruction
*
* @param mint Token mint account
* @param decimals Number of decimals in token account amounts
* @param mintAuthority Minting authority
* @param freezeAuthority Optional authority that can freeze token accounts
* @param programId SPL Token program account
*
* @return Instruction to add to a transaction
*/
export function createInitializeMint2Instruction(mint, decimals, mintAuthority, freezeAuthority, programId = TOKEN_PROGRAM_ID) {
const keys = [{ pubkey: mint, isSigner: false, isWritable: true }];
const data = Buffer.alloc(initializeMint2InstructionData.span);
initializeMint2InstructionData.encode({
instruction: TokenInstruction.InitializeMint2,
decimals,
mintAuthority,
freezeAuthorityOption: freezeAuthority ? 1 : 0,
freezeAuthority: freezeAuthority || new PublicKey(0),
}, data);
return new TransactionInstruction({ keys, programId, data });
}
/**
* Decode an InitializeMint2 instruction and validate it
*
* @param instruction Transaction instruction to decode
* @param programId SPL Token program account
*
* @return Decoded, valid instruction
*/
export function decodeInitializeMint2Instruction(instruction, programId = TOKEN_PROGRAM_ID) {
if (!instruction.programId.equals(programId))
throw new TokenInvalidInstructionProgramError();
if (instruction.data.length !== initializeMint2InstructionData.span)
throw new TokenInvalidInstructionDataError();
const { keys: { mint }, data, } = decodeInitializeMint2InstructionUnchecked(instruction);
if (data.instruction !== TokenInstruction.InitializeMint2)
throw new TokenInvalidInstructionTypeError();
if (!mint)
throw new TokenInvalidInstructionKeysError();
return {
programId,
keys: {
mint,
},
data,
};
}
/**
* Decode an InitializeMint2 instruction without validating it
*
* @param instruction Transaction instruction to decode
*
* @return Decoded, non-validated instruction
*/
export function decodeInitializeMint2InstructionUnchecked({ programId, keys: [mint], data, }) {
const { instruction, decimals, mintAuthority, freezeAuthorityOption, freezeAuthority } = initializeMint2InstructionData.decode(data);
return {
programId,
keys: {
mint,
},
data: {
instruction,
decimals,
mintAuthority,
freezeAuthority: freezeAuthorityOption ? freezeAuthority : null,
},
};
}
//# sourceMappingURL=initializeMint2.js.map

@@ -13,2 +13,3 @@ import type { TransactionInstruction } from '@solana/web3.js';

import type { DecodedInitializeMintInstruction } from './initializeMint.js';
import type { DecodedInitializeMint2Instruction } from './initializeMint2.js';
import type { DecodedInitializeMultisigInstruction } from './initializeMultisig.js';

@@ -25,3 +26,3 @@ import type { DecodedMintToInstruction } from './mintTo.js';

/** TODO: docs */
export declare type DecodedInstruction = DecodedInitializeMintInstruction | DecodedInitializeAccountInstruction | DecodedInitializeMultisigInstruction | DecodedTransferInstruction | DecodedApproveInstruction | DecodedRevokeInstruction | DecodedSetAuthorityInstruction | DecodedMintToInstruction | DecodedBurnInstruction | DecodedCloseAccountInstruction | DecodedFreezeAccountInstruction | DecodedThawAccountInstruction | DecodedTransferCheckedInstruction | DecodedApproveCheckedInstruction | DecodedMintToCheckedInstruction | DecodedBurnCheckedInstruction | DecodedInitializeAccount2Instruction | DecodedSyncNativeInstruction | DecodedInitializeAccount3Instruction | DecodedAmountToUiAmountInstruction | DecodedUiAmountToAmountInstruction | never;
export declare type DecodedInstruction = DecodedInitializeMintInstruction | DecodedInitializeAccountInstruction | DecodedInitializeMultisigInstruction | DecodedTransferInstruction | DecodedApproveInstruction | DecodedRevokeInstruction | DecodedSetAuthorityInstruction | DecodedMintToInstruction | DecodedBurnInstruction | DecodedCloseAccountInstruction | DecodedFreezeAccountInstruction | DecodedThawAccountInstruction | DecodedTransferCheckedInstruction | DecodedApproveCheckedInstruction | DecodedMintToCheckedInstruction | DecodedBurnCheckedInstruction | DecodedInitializeAccount2Instruction | DecodedSyncNativeInstruction | DecodedInitializeAccount3Instruction | DecodedInitializeMint2Instruction | DecodedAmountToUiAmountInstruction | DecodedUiAmountToAmountInstruction | never;
/** TODO: docs */

@@ -67,8 +68,9 @@ export declare function decodeInstruction(instruction: TransactionInstruction, programId?: import("@solana/web3.js").PublicKey): DecodedInstruction;

export declare function isInitializeAccount3Instruction(decoded: DecodedInstruction): decoded is DecodedInitializeAccount3Instruction;
/** TODO: docs, implement */
/** TODO: docs */
export declare function isInitializeMint2Instruction(decoded: DecodedInstruction): decoded is DecodedInitializeMint2Instruction;
/** TODO: docs */
export declare function isAmountToUiAmountInstruction(decoded: DecodedInstruction): decoded is DecodedAmountToUiAmountInstruction;
/** TODO: docs */
export declare function isUiamountToAmountInstruction(decoded: DecodedInstruction): decoded is DecodedUiAmountToAmountInstruction;
/** TODO: docs, implement */
/** TODO: docs, implement */
//# sourceMappingURL=decode.d.ts.map

@@ -1,2 +0,69 @@

export {};
import type { AccountMeta } from '@solana/web3.js';
import { PublicKey, TransactionInstruction } from '@solana/web3.js';
import { TokenInstruction } from './types.js';
/** TODO: docs */
export interface InitializeMint2InstructionData {
instruction: TokenInstruction.InitializeMint2;
decimals: number;
mintAuthority: PublicKey;
freezeAuthorityOption: 1 | 0;
freezeAuthority: PublicKey;
}
/** TODO: docs */
export declare const initializeMint2InstructionData: import("@solana/buffer-layout").Structure<InitializeMint2InstructionData>;
/**
* Construct an InitializeMint2 instruction
*
* @param mint Token mint account
* @param decimals Number of decimals in token account amounts
* @param mintAuthority Minting authority
* @param freezeAuthority Optional authority that can freeze token accounts
* @param programId SPL Token program account
*
* @return Instruction to add to a transaction
*/
export declare function createInitializeMint2Instruction(mint: PublicKey, decimals: number, mintAuthority: PublicKey, freezeAuthority: PublicKey | null, programId?: PublicKey): TransactionInstruction;
/** A decoded, valid InitializeMint2 instruction */
export interface DecodedInitializeMint2Instruction {
programId: PublicKey;
keys: {
mint: AccountMeta;
};
data: {
instruction: TokenInstruction.InitializeMint2;
decimals: number;
mintAuthority: PublicKey;
freezeAuthority: PublicKey | null;
};
}
/**
* Decode an InitializeMint2 instruction and validate it
*
* @param instruction Transaction instruction to decode
* @param programId SPL Token program account
*
* @return Decoded, valid instruction
*/
export declare function decodeInitializeMint2Instruction(instruction: TransactionInstruction, programId?: PublicKey): DecodedInitializeMint2Instruction;
/** A decoded, non-validated InitializeMint2 instruction */
export interface DecodedInitializeMint2InstructionUnchecked {
programId: PublicKey;
keys: {
mint: AccountMeta | undefined;
};
data: {
instruction: number;
decimals: number;
mintAuthority: PublicKey;
freezeAuthority: PublicKey | null;
};
}
/**
* Decode an InitializeMint2 instruction without validating it
*
* @param instruction Transaction instruction to decode
*
* @return Decoded, non-validated instruction
*/
export declare function decodeInitializeMint2InstructionUnchecked({ programId, keys: [mint], data, }: TransactionInstruction): DecodedInitializeMint2InstructionUnchecked;
//# sourceMappingURL=initializeMint2.d.ts.map
{
"name": "@solana/spl-token",
"description": "SPL Token Program JS API",
"version": "0.3.4",
"version": "0.3.5",
"author": "Solana Maintainers <maintainers@solana.foundation>",

@@ -76,2 +76,3 @@ "repository": "https://github.com/solana-labs/solana-program-library",

"eslint-plugin-prettier": "^4.2.1",
"eslint-plugin-require-extensions": "^0.1.1",
"gh-pages": "^3.2.3",

@@ -78,0 +79,0 @@ "mocha": "^9.1.4",

import type { ConfirmOptions, Connection, PublicKey, Signer } from '@solana/web3.js';
import { Keypair, sendAndConfirmTransaction, SystemProgram, Transaction } from '@solana/web3.js';
import { TOKEN_PROGRAM_ID } from '../constants.js';
import { createInitializeMintInstruction } from '../instructions/initializeMint.js';
import { createInitializeMint2Instruction } from '../instructions/initializeMint2.js';
import { getMinimumBalanceForRentExemptMint, MINT_SIZE } from '../state/mint.js';

@@ -41,3 +41,3 @@

}),
createInitializeMintInstruction(keypair.publicKey, decimals, mintAuthority, freezeAuthority, programId)
createInitializeMint2Instruction(keypair.publicKey, decimals, mintAuthority, freezeAuthority, programId)
);

@@ -44,0 +44,0 @@

import type { PublicKey } from '@solana/web3.js';
import { SystemProgram, SYSVAR_RENT_PUBKEY, TransactionInstruction } from '@solana/web3.js';
import { SystemProgram, TransactionInstruction } from '@solana/web3.js';
import { ASSOCIATED_TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID } from '../constants.js';

@@ -32,3 +32,2 @@

{ pubkey: programId, isSigner: false, isWritable: false },
{ pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false },
];

@@ -35,0 +34,0 @@

@@ -27,2 +27,4 @@ import { u8 } from '@solana/buffer-layout';

import { decodeInitializeMintInstruction } from './initializeMint.js';
import type { DecodedInitializeMint2Instruction } from './initializeMint2.js';
import { decodeInitializeMint2Instruction } from './initializeMint2.js';
import type { DecodedInitializeMultisigInstruction } from './initializeMultisig.js';

@@ -71,6 +73,6 @@ import { decodeInitializeMultisigInstruction } from './initializeMultisig.js';

| DecodedInitializeAccount3Instruction
| DecodedInitializeMint2Instruction
| DecodedAmountToUiAmountInstruction
| DecodedUiAmountToAmountInstruction
// | DecodedInitializeMultisig2Instruction
// | DecodedInitializeMint2Instruction
// TODO: implement ^ and remove `never`

@@ -107,11 +109,9 @@ | never;

if (type === TokenInstruction.SyncNative) return decodeSyncNativeInstruction(instruction, programId);
if (type === TokenInstruction.InitializeAccount3)
return decodeInitializeAccount3Instruction(instruction, programId);
if (type === TokenInstruction.InitializeMint2) return decodeInitializeMint2Instruction(instruction, programId);
if (type === TokenInstruction.AmountToUiAmount) return decodeAmountToUiAmountInstruction(instruction, programId);
if (type === TokenInstruction.UiAmountToAmount) return decodeUiAmountToAmountInstruction(instruction, programId);
// TODO: implement
if (type === TokenInstruction.InitializeAccount3)
return decodeInitializeAccount3Instruction(instruction, programId);
// TODO: implement
if (type === TokenInstruction.InitializeMultisig2) throw new TokenInvalidInstructionTypeError();
// TODO: implement
if (type === TokenInstruction.InitializeMint2) throw new TokenInvalidInstructionTypeError();

@@ -226,3 +226,17 @@ throw new TokenInvalidInstructionTypeError();

/** TODO: docs, implement */
// export function isInitializeMultisig2Instruction(
// decoded: DecodedInstruction
// ): decoded is DecodedInitializeMultisig2Instruction {
// return decoded.data.instruction === TokenInstruction.InitializeMultisig2;
// }
/** TODO: docs */
export function isInitializeMint2Instruction(
decoded: DecodedInstruction
): decoded is DecodedInitializeMint2Instruction {
return decoded.data.instruction === TokenInstruction.InitializeMint2;
}
/** TODO: docs */
export function isAmountToUiAmountInstruction(

@@ -240,15 +254,1 @@ decoded: DecodedInstruction

}
/** TODO: docs, implement */
// export function isInitializeMultisig2Instruction(
// decoded: DecodedInstruction
// ): decoded is DecodedInitializeMultisig2Instruction {
// return decoded.data.instruction === TokenInstruction.InitializeMultisig2;
// }
/** TODO: docs, implement */
// export function isInitializeMint2Instruction(
// decoded: DecodedInstruction
// ): decoded is DecodedInitializeMint2Instruction {
// return decoded.data.instruction === TokenInstruction.InitializeMint2;
// }

@@ -1,1 +0,153 @@

export {}; // TODO: implement
import { struct, u8 } from '@solana/buffer-layout';
import { publicKey } from '@solana/buffer-layout-utils';
import type { AccountMeta } from '@solana/web3.js';
import { PublicKey, TransactionInstruction } from '@solana/web3.js';
import { TOKEN_PROGRAM_ID } from '../constants.js';
import {
TokenInvalidInstructionDataError,
TokenInvalidInstructionKeysError,
TokenInvalidInstructionProgramError,
TokenInvalidInstructionTypeError,
} from '../errors.js';
import { TokenInstruction } from './types.js';
/** TODO: docs */
export interface InitializeMint2InstructionData {
instruction: TokenInstruction.InitializeMint2;
decimals: number;
mintAuthority: PublicKey;
freezeAuthorityOption: 1 | 0;
freezeAuthority: PublicKey;
}
/** TODO: docs */
export const initializeMint2InstructionData = struct<InitializeMint2InstructionData>([
u8('instruction'),
u8('decimals'),
publicKey('mintAuthority'),
u8('freezeAuthorityOption'),
publicKey('freezeAuthority'),
]);
/**
* Construct an InitializeMint2 instruction
*
* @param mint Token mint account
* @param decimals Number of decimals in token account amounts
* @param mintAuthority Minting authority
* @param freezeAuthority Optional authority that can freeze token accounts
* @param programId SPL Token program account
*
* @return Instruction to add to a transaction
*/
export function createInitializeMint2Instruction(
mint: PublicKey,
decimals: number,
mintAuthority: PublicKey,
freezeAuthority: PublicKey | null,
programId = TOKEN_PROGRAM_ID
): TransactionInstruction {
const keys = [{ pubkey: mint, isSigner: false, isWritable: true }];
const data = Buffer.alloc(initializeMint2InstructionData.span);
initializeMint2InstructionData.encode(
{
instruction: TokenInstruction.InitializeMint2,
decimals,
mintAuthority,
freezeAuthorityOption: freezeAuthority ? 1 : 0,
freezeAuthority: freezeAuthority || new PublicKey(0),
},
data
);
return new TransactionInstruction({ keys, programId, data });
}
/** A decoded, valid InitializeMint2 instruction */
export interface DecodedInitializeMint2Instruction {
programId: PublicKey;
keys: {
mint: AccountMeta;
};
data: {
instruction: TokenInstruction.InitializeMint2;
decimals: number;
mintAuthority: PublicKey;
freezeAuthority: PublicKey | null;
};
}
/**
* Decode an InitializeMint2 instruction and validate it
*
* @param instruction Transaction instruction to decode
* @param programId SPL Token program account
*
* @return Decoded, valid instruction
*/
export function decodeInitializeMint2Instruction(
instruction: TransactionInstruction,
programId = TOKEN_PROGRAM_ID
): DecodedInitializeMint2Instruction {
if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();
if (instruction.data.length !== initializeMint2InstructionData.span) throw new TokenInvalidInstructionDataError();
const {
keys: { mint },
data,
} = decodeInitializeMint2InstructionUnchecked(instruction);
if (data.instruction !== TokenInstruction.InitializeMint2) throw new TokenInvalidInstructionTypeError();
if (!mint) throw new TokenInvalidInstructionKeysError();
return {
programId,
keys: {
mint,
},
data,
};
}
/** A decoded, non-validated InitializeMint2 instruction */
export interface DecodedInitializeMint2InstructionUnchecked {
programId: PublicKey;
keys: {
mint: AccountMeta | undefined;
};
data: {
instruction: number;
decimals: number;
mintAuthority: PublicKey;
freezeAuthority: PublicKey | null;
};
}
/**
* Decode an InitializeMint2 instruction without validating it
*
* @param instruction Transaction instruction to decode
*
* @return Decoded, non-validated instruction
*/
export function decodeInitializeMint2InstructionUnchecked({
programId,
keys: [mint],
data,
}: TransactionInstruction): DecodedInitializeMint2InstructionUnchecked {
const { instruction, decimals, mintAuthority, freezeAuthorityOption, freezeAuthority } =
initializeMint2InstructionData.decode(data);
return {
programId,
keys: {
mint,
},
data: {
instruction,
decimals,
mintAuthority,
freezeAuthority: freezeAuthorityOption ? freezeAuthority : null,
},
};
}

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc