diff --git a/.changeset/real-chairs-search.md b/.changeset/real-chairs-search.md new file mode 100644 index 00000000..51f8d2f1 --- /dev/null +++ b/.changeset/real-chairs-search.md @@ -0,0 +1,5 @@ +--- +"@metaplex-foundation/kinobi": patch +--- + +Add serde DisplayFromStr for Pubkey and Vec in Rust rendering. diff --git a/src/renderers/rust/getTypeManifestVisitor.ts b/src/renderers/rust/getTypeManifestVisitor.ts index e0fd7b45..f652c617 100644 --- a/src/renderers/rust/getTypeManifestVisitor.ts +++ b/src/renderers/rust/getTypeManifestVisitor.ts @@ -225,9 +225,18 @@ export function getTypeManifestVisitor() { const childManifest = visit(enumTupleVariantType.tuple, self); parentName = originalParentName; + let derive = ''; + if (childManifest.type === '(Pubkey)') { + derive = + '#[cfg_attr(feature = "serde", serde(with = "serde_with::As::"))]\n'; + } else if (childManifest.type === '(Vec)') { + derive = + '#[cfg_attr(feature = "serde", serde(with = "serde_with::As::>"))]\n'; + } + return { ...childManifest, - type: `${name}${childManifest.type},`, + type: `${derive}${name}${childManifest.type},`, }; }, @@ -333,6 +342,9 @@ export function getTypeManifestVisitor() { if (fieldManifest.type === 'Pubkey') { derive = '#[cfg_attr(feature = "serde", serde(with = "serde_with::As::"))]\n'; + } else if (fieldManifest.type === 'Vec') { + derive = + '#[cfg_attr(feature = "serde", serde(with = "serde_with::As::>"))]\n'; } else if ( (isNode(resolvedNestedType, 'arrayTypeNode') && isNode(resolvedNestedType.count, 'fixedCountNode') && diff --git a/test/packages/js-experimental/src/generated/programs/index.ts b/test/packages/js-experimental/src/generated/programs/index.ts index 6bb2e932..81c1337e 100644 --- a/test/packages/js-experimental/src/generated/programs/index.ts +++ b/test/packages/js-experimental/src/generated/programs/index.ts @@ -9,5 +9,6 @@ export * from './mplCandyMachineCore'; export * from './mplTokenAuthRules'; export * from './mplTokenMetadata'; +export * from './pubkeyTests'; export * from './splMemo'; export * from './splSystem'; diff --git a/test/packages/js-experimental/src/generated/programs/pubkeyTests.ts b/test/packages/js-experimental/src/generated/programs/pubkeyTests.ts new file mode 100644 index 00000000..1698c72e --- /dev/null +++ b/test/packages/js-experimental/src/generated/programs/pubkeyTests.ts @@ -0,0 +1,23 @@ +/** + * This code was AUTOGENERATED using the kinobi library. + * Please DO NOT EDIT THIS FILE, instead use visitors + * to add features, then rerun kinobi to update it. + * + * @see https://github.com/metaplex-foundation/kinobi + */ + +import { Address } from '@solana/addresses'; +import { Program } from '@solana/programs'; + +export const PUBKEY_TESTS_PROGRAM_ADDRESS = + 'PubkeyTests1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d' as Address<'PubkeyTests1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d'>; + +export type PubkeyTestsProgram = + Program<'PubkeyTests1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d'>; + +export function getPubkeyTestsProgram(): PubkeyTestsProgram { + return { + name: 'pubkeyTests', + address: PUBKEY_TESTS_PROGRAM_ADDRESS, + }; +} diff --git a/test/packages/js-experimental/src/generated/types/index.ts b/test/packages/js-experimental/src/generated/types/index.ts index 4ab4cf5a..69461bf3 100644 --- a/test/packages/js-experimental/src/generated/types/index.ts +++ b/test/packages/js-experimental/src/generated/types/index.ts @@ -38,6 +38,7 @@ export * from './programmableConfig'; export * from './reservation'; export * from './reservationV1'; export * from './revokeArgs'; +export * from './ruleSet'; export * from './setCollectionSizeArgs'; export * from './taCreateArgs'; export * from './taKey'; @@ -46,6 +47,7 @@ export * from './tmKey'; export * from './tokenStandard'; export * from './transferArgs'; export * from './updateArgs'; +export * from './updateDelegate'; export * from './useAssetArgs'; export * from './useMethod'; export * from './uses'; diff --git a/test/packages/js-experimental/src/generated/types/ruleSet.ts b/test/packages/js-experimental/src/generated/types/ruleSet.ts new file mode 100644 index 00000000..6e496f6f --- /dev/null +++ b/test/packages/js-experimental/src/generated/types/ruleSet.ts @@ -0,0 +1,117 @@ +/** + * This code was AUTOGENERATED using the kinobi library. + * Please DO NOT EDIT THIS FILE, instead use visitors + * to add features, then rerun kinobi to update it. + * + * @see https://github.com/metaplex-foundation/kinobi + */ + +import { + Address, + getAddressDecoder, + getAddressEncoder, +} from '@solana/addresses'; +import { + Codec, + Decoder, + Encoder, + GetDataEnumKind, + GetDataEnumKindContent, + combineCodec, + getArrayDecoder, + getArrayEncoder, + getDataEnumDecoder, + getDataEnumEncoder, + getStructDecoder, + getStructEncoder, + getTupleDecoder, + getTupleEncoder, + getUnitDecoder, + getUnitEncoder, +} from '@solana/codecs'; + +export type RuleSet = + | { __kind: 'None' } + | { __kind: 'Single'; fields: [Address] } + | { __kind: 'ProgramAllowList'; fields: [Array
] } + | { __kind: 'ProgramDenyList'; fields: [Array
] }; + +export type RuleSetArgs = RuleSet; + +export function getRuleSetEncoder(): Encoder { + return getDataEnumEncoder([ + ['None', getUnitEncoder()], + [ + 'Single', + getStructEncoder([['fields', getTupleEncoder([getAddressEncoder()])]]), + ], + [ + 'ProgramAllowList', + getStructEncoder([ + ['fields', getTupleEncoder([getArrayEncoder(getAddressEncoder())])], + ]), + ], + [ + 'ProgramDenyList', + getStructEncoder([ + ['fields', getTupleEncoder([getArrayEncoder(getAddressEncoder())])], + ]), + ], + ]); +} + +export function getRuleSetDecoder(): Decoder { + return getDataEnumDecoder([ + ['None', getUnitDecoder()], + [ + 'Single', + getStructDecoder([['fields', getTupleDecoder([getAddressDecoder()])]]), + ], + [ + 'ProgramAllowList', + getStructDecoder([ + ['fields', getTupleDecoder([getArrayDecoder(getAddressDecoder())])], + ]), + ], + [ + 'ProgramDenyList', + getStructDecoder([ + ['fields', getTupleDecoder([getArrayDecoder(getAddressDecoder())])], + ]), + ], + ]); +} + +export function getRuleSetCodec(): Codec { + return combineCodec(getRuleSetEncoder(), getRuleSetDecoder()); +} + +// Data Enum Helpers. +export function ruleSet(kind: 'None'): GetDataEnumKind; +export function ruleSet( + kind: 'Single', + data: GetDataEnumKindContent['fields'] +): GetDataEnumKind; +export function ruleSet( + kind: 'ProgramAllowList', + data: GetDataEnumKindContent['fields'] +): GetDataEnumKind; +export function ruleSet( + kind: 'ProgramDenyList', + data: GetDataEnumKindContent['fields'] +): GetDataEnumKind; +export function ruleSet( + kind: K, + data?: Data +) { + return Array.isArray(data) + ? { __kind: kind, fields: data } + : { __kind: kind, ...(data ?? {}) }; +} + +export function isRuleSet( + kind: K, + value: RuleSet +): value is RuleSet & { __kind: K } { + return value.__kind === kind; +} diff --git a/test/packages/js-experimental/src/generated/types/updateDelegate.ts b/test/packages/js-experimental/src/generated/types/updateDelegate.ts new file mode 100644 index 00000000..e0e3b996 --- /dev/null +++ b/test/packages/js-experimental/src/generated/types/updateDelegate.ts @@ -0,0 +1,46 @@ +/** + * This code was AUTOGENERATED using the kinobi library. + * Please DO NOT EDIT THIS FILE, instead use visitors + * to add features, then rerun kinobi to update it. + * + * @see https://github.com/metaplex-foundation/kinobi + */ + +import { + Address, + getAddressDecoder, + getAddressEncoder, +} from '@solana/addresses'; +import { + Codec, + Decoder, + Encoder, + combineCodec, + getArrayDecoder, + getArrayEncoder, + getStructDecoder, + getStructEncoder, +} from '@solana/codecs'; + +export type UpdateDelegate = { additionalDelegates: Array
}; + +export type UpdateDelegateArgs = UpdateDelegate; + +export function getUpdateDelegateEncoder(): Encoder { + return getStructEncoder([ + ['additionalDelegates', getArrayEncoder(getAddressEncoder())], + ]); +} + +export function getUpdateDelegateDecoder(): Decoder { + return getStructDecoder([ + ['additionalDelegates', getArrayDecoder(getAddressDecoder())], + ]); +} + +export function getUpdateDelegateCodec(): Codec< + UpdateDelegateArgs, + UpdateDelegate +> { + return combineCodec(getUpdateDelegateEncoder(), getUpdateDelegateDecoder()); +} diff --git a/test/packages/js/src/generated/errors/index.ts b/test/packages/js/src/generated/errors/index.ts index 6bb2e932..81c1337e 100644 --- a/test/packages/js/src/generated/errors/index.ts +++ b/test/packages/js/src/generated/errors/index.ts @@ -9,5 +9,6 @@ export * from './mplCandyMachineCore'; export * from './mplTokenAuthRules'; export * from './mplTokenMetadata'; +export * from './pubkeyTests'; export * from './splMemo'; export * from './splSystem'; diff --git a/test/packages/js/src/generated/errors/pubkeyTests.ts b/test/packages/js/src/generated/errors/pubkeyTests.ts new file mode 100644 index 00000000..6aac1d1a --- /dev/null +++ b/test/packages/js/src/generated/errors/pubkeyTests.ts @@ -0,0 +1,42 @@ +/** + * This code was AUTOGENERATED using the kinobi library. + * Please DO NOT EDIT THIS FILE, instead use visitors + * to add features, then rerun kinobi to update it. + * + * @see https://github.com/metaplex-foundation/kinobi + */ + +import { Program, ProgramError } from '@metaplex-foundation/umi'; + +type ProgramErrorConstructor = new ( + program: Program, + cause?: Error +) => ProgramError; +const codeToErrorMap: Map = new Map(); +const nameToErrorMap: Map = new Map(); + +/** + * Attempts to resolve a custom program error from the provided error code. + * @category Errors + */ +export function getPubkeyTestsErrorFromCode( + code: number, + program: Program, + cause?: Error +): ProgramError | null { + const constructor = codeToErrorMap.get(code); + return constructor ? new constructor(program, cause) : null; +} + +/** + * Attempts to resolve a custom program error from the provided error name, i.e. 'Unauthorized'. + * @category Errors + */ +export function getPubkeyTestsErrorFromName( + name: string, + program: Program, + cause?: Error +): ProgramError | null { + const constructor = nameToErrorMap.get(name); + return constructor ? new constructor(program, cause) : null; +} diff --git a/test/packages/js/src/generated/programs/index.ts b/test/packages/js/src/generated/programs/index.ts index 6bb2e932..81c1337e 100644 --- a/test/packages/js/src/generated/programs/index.ts +++ b/test/packages/js/src/generated/programs/index.ts @@ -9,5 +9,6 @@ export * from './mplCandyMachineCore'; export * from './mplTokenAuthRules'; export * from './mplTokenMetadata'; +export * from './pubkeyTests'; export * from './splMemo'; export * from './splSystem'; diff --git a/test/packages/js/src/generated/programs/pubkeyTests.ts b/test/packages/js/src/generated/programs/pubkeyTests.ts new file mode 100644 index 00000000..1549c688 --- /dev/null +++ b/test/packages/js/src/generated/programs/pubkeyTests.ts @@ -0,0 +1,55 @@ +/** + * This code was AUTOGENERATED using the kinobi library. + * Please DO NOT EDIT THIS FILE, instead use visitors + * to add features, then rerun kinobi to update it. + * + * @see https://github.com/metaplex-foundation/kinobi + */ + +import { + ClusterFilter, + Context, + Program, + PublicKey, +} from '@metaplex-foundation/umi'; +import { + getPubkeyTestsErrorFromCode, + getPubkeyTestsErrorFromName, +} from '../errors'; + +export const PUBKEY_TESTS_PROGRAM_ID = + 'PubkeyTests1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d' as PublicKey<'PubkeyTests1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d'>; + +export function createPubkeyTestsProgram(): Program { + return { + name: 'pubkeyTests', + publicKey: PUBKEY_TESTS_PROGRAM_ID, + getErrorFromCode(code: number, cause?: Error) { + return getPubkeyTestsErrorFromCode(code, this, cause); + }, + getErrorFromName(name: string, cause?: Error) { + return getPubkeyTestsErrorFromName(name, this, cause); + }, + isOnCluster() { + return true; + }, + }; +} + +export function getPubkeyTestsProgram( + context: Pick, + clusterFilter?: ClusterFilter +): T { + return context.programs.get('pubkeyTests', clusterFilter); +} + +export function getPubkeyTestsProgramId( + context: Pick, + clusterFilter?: ClusterFilter +): PublicKey { + return context.programs.getPublicKey( + 'pubkeyTests', + PUBKEY_TESTS_PROGRAM_ID, + clusterFilter + ); +} diff --git a/test/packages/js/src/generated/types/index.ts b/test/packages/js/src/generated/types/index.ts index 4ab4cf5a..69461bf3 100644 --- a/test/packages/js/src/generated/types/index.ts +++ b/test/packages/js/src/generated/types/index.ts @@ -38,6 +38,7 @@ export * from './programmableConfig'; export * from './reservation'; export * from './reservationV1'; export * from './revokeArgs'; +export * from './ruleSet'; export * from './setCollectionSizeArgs'; export * from './taCreateArgs'; export * from './taKey'; @@ -46,6 +47,7 @@ export * from './tmKey'; export * from './tokenStandard'; export * from './transferArgs'; export * from './updateArgs'; +export * from './updateDelegate'; export * from './useAssetArgs'; export * from './useMethod'; export * from './uses'; diff --git a/test/packages/js/src/generated/types/ruleSet.ts b/test/packages/js/src/generated/types/ruleSet.ts new file mode 100644 index 00000000..952cc0d5 --- /dev/null +++ b/test/packages/js/src/generated/types/ruleSet.ts @@ -0,0 +1,84 @@ +/** + * This code was AUTOGENERATED using the kinobi library. + * Please DO NOT EDIT THIS FILE, instead use visitors + * to add features, then rerun kinobi to update it. + * + * @see https://github.com/metaplex-foundation/kinobi + */ + +import { PublicKey } from '@metaplex-foundation/umi'; +import { + GetDataEnumKind, + GetDataEnumKindContent, + Serializer, + array, + dataEnum, + publicKey as publicKeySerializer, + struct, + tuple, + unit, +} from '@metaplex-foundation/umi/serializers'; + +export type RuleSet = + | { __kind: 'None' } + | { __kind: 'Single'; fields: [PublicKey] } + | { __kind: 'ProgramAllowList'; fields: [Array] } + | { __kind: 'ProgramDenyList'; fields: [Array] }; + +export type RuleSetArgs = RuleSet; + +export function getRuleSetSerializer(): Serializer { + return dataEnum( + [ + ['None', unit()], + [ + 'Single', + struct>([ + ['fields', tuple([publicKeySerializer()])], + ]), + ], + [ + 'ProgramAllowList', + struct>([ + ['fields', tuple([array(publicKeySerializer())])], + ]), + ], + [ + 'ProgramDenyList', + struct>([ + ['fields', tuple([array(publicKeySerializer())])], + ]), + ], + ], + { description: 'RuleSet' } + ) as Serializer; +} + +// Data Enum Helpers. +export function ruleSet(kind: 'None'): GetDataEnumKind; +export function ruleSet( + kind: 'Single', + data: GetDataEnumKindContent['fields'] +): GetDataEnumKind; +export function ruleSet( + kind: 'ProgramAllowList', + data: GetDataEnumKindContent['fields'] +): GetDataEnumKind; +export function ruleSet( + kind: 'ProgramDenyList', + data: GetDataEnumKindContent['fields'] +): GetDataEnumKind; +export function ruleSet( + kind: K, + data?: any +): Extract { + return Array.isArray(data) + ? { __kind: kind, fields: data } + : { __kind: kind, ...(data ?? {}) }; +} +export function isRuleSet( + kind: K, + value: RuleSet +): value is RuleSet & { __kind: K } { + return value.__kind === kind; +} diff --git a/test/packages/js/src/generated/types/updateDelegate.ts b/test/packages/js/src/generated/types/updateDelegate.ts new file mode 100644 index 00000000..73164cef --- /dev/null +++ b/test/packages/js/src/generated/types/updateDelegate.ts @@ -0,0 +1,29 @@ +/** + * This code was AUTOGENERATED using the kinobi library. + * Please DO NOT EDIT THIS FILE, instead use visitors + * to add features, then rerun kinobi to update it. + * + * @see https://github.com/metaplex-foundation/kinobi + */ + +import { PublicKey } from '@metaplex-foundation/umi'; +import { + Serializer, + array, + publicKey as publicKeySerializer, + struct, +} from '@metaplex-foundation/umi/serializers'; + +export type UpdateDelegate = { additionalDelegates: Array }; + +export type UpdateDelegateArgs = UpdateDelegate; + +export function getUpdateDelegateSerializer(): Serializer< + UpdateDelegateArgs, + UpdateDelegate +> { + return struct( + [['additionalDelegates', array(publicKeySerializer())]], + { description: 'UpdateDelegate' } + ) as Serializer; +} diff --git a/test/packages/rust/src/generated/programs.rs b/test/packages/rust/src/generated/programs.rs index 476a1d56..9f2b94d7 100644 --- a/test/packages/rust/src/generated/programs.rs +++ b/test/packages/rust/src/generated/programs.rs @@ -17,6 +17,9 @@ pub const MPL_TOKEN_AUTH_RULES_ID: Pubkey = pubkey!("auth9SigNpDKz4sJJ1DfCTuZrZN /// `mpl_token_metadata` program ID. pub const MPL_TOKEN_METADATA_ID: Pubkey = pubkey!("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"); +/// `pubkey_tests` program ID. +pub const PUBKEY_TESTS_ID: Pubkey = pubkey!("PubkeyTests1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d"); + /// `spl_memo` program ID. pub const SPL_MEMO_ID: Pubkey = pubkey!("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"); diff --git a/test/packages/rust/src/generated/types/escrow_authority.rs b/test/packages/rust/src/generated/types/escrow_authority.rs index 6b7a6e31..83ced1d3 100644 --- a/test/packages/rust/src/generated/types/escrow_authority.rs +++ b/test/packages/rust/src/generated/types/escrow_authority.rs @@ -13,5 +13,9 @@ use solana_program::pubkey::Pubkey; #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub enum EscrowAuthority { TokenOwner, + #[cfg_attr( + feature = "serde", + serde(with = "serde_with::As::") + )] Creator(Pubkey), } diff --git a/test/packages/rust/src/generated/types/mod.rs b/test/packages/rust/src/generated/types/mod.rs index 81261a01..a84825d9 100644 --- a/test/packages/rust/src/generated/types/mod.rs +++ b/test/packages/rust/src/generated/types/mod.rs @@ -37,6 +37,7 @@ pub(crate) mod r#programmable_config; pub(crate) mod r#reservation; pub(crate) mod r#reservation_v1; pub(crate) mod r#revoke_args; +pub(crate) mod r#rule_set; pub(crate) mod r#set_collection_size_args; pub(crate) mod r#ta_create_args; pub(crate) mod r#ta_key; @@ -45,6 +46,7 @@ pub(crate) mod r#tm_key; pub(crate) mod r#token_standard; pub(crate) mod r#transfer_args; pub(crate) mod r#update_args; +pub(crate) mod r#update_delegate; pub(crate) mod r#use_asset_args; pub(crate) mod r#use_method; pub(crate) mod r#uses; @@ -82,6 +84,7 @@ pub use self::r#programmable_config::*; pub use self::r#reservation::*; pub use self::r#reservation_v1::*; pub use self::r#revoke_args::*; +pub use self::r#rule_set::*; pub use self::r#set_collection_size_args::*; pub use self::r#ta_create_args::*; pub use self::r#ta_key::*; @@ -90,6 +93,7 @@ pub use self::r#tm_key::*; pub use self::r#token_standard::*; pub use self::r#transfer_args::*; pub use self::r#update_args::*; +pub use self::r#update_delegate::*; pub use self::r#use_asset_args::*; pub use self::r#use_method::*; pub use self::r#uses::*; diff --git a/test/packages/rust/src/generated/types/payload_type.rs b/test/packages/rust/src/generated/types/payload_type.rs index 15a2dcca..38fd4f4a 100644 --- a/test/packages/rust/src/generated/types/payload_type.rs +++ b/test/packages/rust/src/generated/types/payload_type.rs @@ -13,6 +13,10 @@ use solana_program::pubkey::Pubkey; #[derive(BorshSerialize, BorshDeserialize, Clone, Debug, Eq, PartialEq)] #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub enum PayloadType { + #[cfg_attr( + feature = "serde", + serde(with = "serde_with::As::") + )] Pubkey(Pubkey), Seeds { seeds: Vec>, diff --git a/test/packages/rust/src/generated/types/rule_set.rs b/test/packages/rust/src/generated/types/rule_set.rs new file mode 100644 index 00000000..c26b62a4 --- /dev/null +++ b/test/packages/rust/src/generated/types/rule_set.rs @@ -0,0 +1,31 @@ +//! This code was AUTOGENERATED using the kinobi library. +//! Please DO NOT EDIT THIS FILE, instead use visitors +//! to add features, then rerun kinobi to update it. +//! +//! [https://github.com/metaplex-foundation/kinobi] +//! + +use borsh::BorshDeserialize; +use borsh::BorshSerialize; +use solana_program::pubkey::Pubkey; + +#[derive(BorshSerialize, BorshDeserialize, Clone, Debug, Eq, PartialEq)] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] +pub enum RuleSet { + None, + #[cfg_attr( + feature = "serde", + serde(with = "serde_with::As::") + )] + Single(Pubkey), + #[cfg_attr( + feature = "serde", + serde(with = "serde_with::As::>") + )] + ProgramAllowList(Vec), + #[cfg_attr( + feature = "serde", + serde(with = "serde_with::As::>") + )] + ProgramDenyList(Vec), +} diff --git a/test/packages/rust/src/generated/types/update_delegate.rs b/test/packages/rust/src/generated/types/update_delegate.rs new file mode 100644 index 00000000..dedcb944 --- /dev/null +++ b/test/packages/rust/src/generated/types/update_delegate.rs @@ -0,0 +1,20 @@ +//! This code was AUTOGENERATED using the kinobi library. +//! Please DO NOT EDIT THIS FILE, instead use visitors +//! to add features, then rerun kinobi to update it. +//! +//! [https://github.com/metaplex-foundation/kinobi] +//! + +use borsh::BorshDeserialize; +use borsh::BorshSerialize; +use solana_program::pubkey::Pubkey; + +#[derive(BorshSerialize, BorshDeserialize, Clone, Debug, Eq, PartialEq)] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] +pub struct UpdateDelegate { + #[cfg_attr( + feature = "serde", + serde(with = "serde_with::As::>") + )] + pub additional_delegates: Vec, +} diff --git a/test/pubkey_tests.json b/test/pubkey_tests.json new file mode 100644 index 00000000..82ad1c46 --- /dev/null +++ b/test/pubkey_tests.json @@ -0,0 +1,59 @@ +{ + "version": "0.1.0", + "name": "pubkey_tests", + "types": [ + { + "name": "UpdateDelegate", + "type": { + "kind": "struct", + "fields": [ + { + "name": "additionalDelegates", + "type": { + "vec": "publicKey" + } + } + ] + } + }, + { + "name": "RuleSet", + "type": { + "kind": "enum", + "variants": [ + { + "name": "None" + }, + { + "name": "Single", + "fields": [ + "publicKey" + ] + }, + { + "name": "ProgramAllowList", + "fields": [ + { + "vec": "publicKey" + } + ] + }, + { + "name": "ProgramDenyList", + "fields": [ + { + "vec": "publicKey" + } + ] + } + ] + } + } + ], + "metadata": { + "origin": "shank", + "address": "PubkeyTests1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d", + "binaryVersion": "0.4.2", + "libVersion": "0.4.2" + } +} \ No newline at end of file diff --git a/test/testFile.cjs b/test/testFile.cjs index 1622ec63..9dd968c1 100644 --- a/test/testFile.cjs +++ b/test/testFile.cjs @@ -5,6 +5,7 @@ const kinobi = k.createFromIdl(__dirname + '/spl_system.json', [ __dirname + '/mpl_candy_machine_core.json', __dirname + '/mpl_token_auth_rules.json', __dirname + '/mpl_token_metadata.json', + __dirname + '/pubkey_tests.json', ]); kinobi.update(