diff --git a/.changeset/stupid-forks-switch.md b/.changeset/stupid-forks-switch.md new file mode 100644 index 0000000..eb318e3 --- /dev/null +++ b/.changeset/stupid-forks-switch.md @@ -0,0 +1,5 @@ +--- +"@solanafm/explorer-kit-idls": patch +--- + +fix: add boolean field to confidential transfer config diff --git a/packages/explorerkit-idls/src/idls/shank/spl/token-extensions/token-v2-235377525.ts b/packages/explorerkit-idls/src/idls/shank/spl/token-extensions/token-v2-235377525.ts index 624e269..c8b81ea 100644 --- a/packages/explorerkit-idls/src/idls/shank/spl/token-extensions/token-v2-235377525.ts +++ b/packages/explorerkit-idls/src/idls/shank/spl/token-extensions/token-v2-235377525.ts @@ -1607,6 +1607,10 @@ export const Token2022_235377525_IDL: Idl = { name: "withdrawWithheldAuthorityElgamalPubkey", type: "publicKey", }, + { + name: "harvestToMintEnabled", + type: "bool", + }, { name: "withheldAmount", type: { diff --git a/packages/explorerkit-idls/src/idls/shank/spl/token-extensions/token-v2.ts b/packages/explorerkit-idls/src/idls/shank/spl/token-extensions/token-v2.ts index 0e8109f..c22f04b 100644 --- a/packages/explorerkit-idls/src/idls/shank/spl/token-extensions/token-v2.ts +++ b/packages/explorerkit-idls/src/idls/shank/spl/token-extensions/token-v2.ts @@ -1587,6 +1587,10 @@ export const Token2022IDL: Idl = { name: "withdrawWithheldAuthorityElgamalPubkey", type: "publicKey", }, + { + name: "harvestToMintEnabled", + type: "bool", + }, { name: "withheldAmount", type: { diff --git a/packages/explorerkit-translator/tests/token/token-account.test.ts b/packages/explorerkit-translator/tests/token/token-account.test.ts index 6985c5b..e0dde01 100644 --- a/packages/explorerkit-translator/tests/token/token-account.test.ts +++ b/packages/explorerkit-translator/tests/token/token-account.test.ts @@ -69,6 +69,26 @@ describe("parse token-2022 mint account with more than 1 extensions", () => { expect(parsedAccountData?.data.accountType.enumType).toBe("mint"); } }); + + it("should be able to parse a mint account with more than 1 extensions and has 8 extensions", () => { + if (token2022Parser) { + const accountData = + "AQAAAEWL8jQUbMmHNpVOADdvZA1z7a1jyDebZa3bW4Jv0uMVYHGwOIwEAAAGAQEAAAAXhTJh72q4Uypn8FOGWq0xKT/PB88SCrW5oVcGVI3AKwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQMAIAAXhTJh72q4Uypn8FOGWq0xKT/PB88SCrW5oVcGVI3AKwwAIAAXhTJh72q4Uypn8FOGWq0xKT/PB88SCrW5oVcGVI3AKwEAbAAXhTJh72q4Uypn8FOGWq0xKT/PB88SCrW5oVcGVI3AKxeFMmHvarhTKmfwU4ZarTEpP88HzxIKtbmhVwZUjcArAAAAAAAAAABdAgAAAAAAAAAAAAAAAAAAAABdAgAAAAAAAAAAAAAAAAAAAAAEAEEAF4UyYe9quFMqZ/BThlqtMSk/zwfPEgq1uaFXBlSNwCsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAIEAF4UyYe9quFMqZ/BThlqtMSk/zwfPEgq1uaFXBlSNwCscN+ZDO3ME3YJzeuQNm4vzxJ9bDmxJqNUzKLPlBpAcVwEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgBAABeFMmHvarhTKmfwU4ZarTEpP88HzxIKtbmhVwZUjcArAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAEAAgnQVMyO1m+9u94xUbiBsQYh7lCdtZO+gj0jz14I76NgXkkg7bIoqh7dHHYFPlZH5OVyECpzj2fTVun06S4p0nhMArgCCdBUzI7Wb7273jFRuIGxBiHuUJ21k76CPSPPXgjvo2BeSSDtsiiqHt0cdgU+Vkfk5XIQKnOPZ9NW6fTpLinSeCgAAAFBheVBhbCBVU0QFAAAAUFlVU0RPAAAAaHR0cHM6Ly90b2tlbi1tZXRhZGF0YS5wYXhvcy5jb20vcHl1c2RfbWV0YWRhdGEvcHJvZC9zb2xhbmEvcHl1c2RfbWV0YWRhdGEuanNvbgAAAAA="; + const parsedAccountData = token2022Parser.parseAccount(accountData); + expect(parsedAccountData?.name).toBe("mintAccount"); + expect(parsedAccountData?.data.decimals).toBe(6); + expect(parsedAccountData?.data.extensions).toHaveLength(8); + expect(parsedAccountData?.data.extensions[0].enumType).toBe("mintCloseAuthority"); + expect(parsedAccountData?.data.extensions[1].enumType).toBe("permanentDelegate"); + expect(parsedAccountData?.data.extensions[2].enumType).toBe("transferFeeConfig"); + expect(parsedAccountData?.data.extensions[3].enumType).toBe("confidentialTransferMint"); + expect(parsedAccountData?.data.extensions[4].enumType).toBe("confidentialTransferFeeConfig"); + expect(parsedAccountData?.data.extensions[5].enumType).toBe("transferHook"); + expect(parsedAccountData?.data.extensions[6].enumType).toBe("metadataPointer"); + expect(parsedAccountData?.data.extensions[7].enumType).toBe("tokenMetadata"); + expect(parsedAccountData?.data.accountType.enumType).toBe("mint"); + } + }); }); describe("parse a basic token-2022 token account with immutable extension", () => {