/**
 * This code was AUTOGENERATED using the codama library.
 * Please DO NOT EDIT THIS FILE, instead use visitors
 * to add features, then rerun codama to update it.
 *
 * @see https://github.com/codama-idl/codama
 */
import { type Address, type Codec, type Decoder, type Encoder, type IAccountMeta, type IAccountSignerMeta, type IInstruction, type IInstructionWithAccounts, type IInstructionWithData, type Option, type OptionOrNullable, type ReadonlySignerAccount, type TransactionSigner, type WritableAccount } from "@solana/kit";
import { TOKEN_METADATA_PROGRAM_ADDRESS } from "../programs";
import { type DataV2, type DataV2Args } from "../types";
export declare const UPDATE_METADATA_ACCOUNT_V2_DISCRIMINATOR = 15;
export declare function getUpdateMetadataAccountV2DiscriminatorBytes(): import("@solana/kit").ReadonlyUint8Array;
export type UpdateMetadataAccountV2Instruction<TProgram extends string = typeof TOKEN_METADATA_PROGRAM_ADDRESS, TAccountMetadata extends string | IAccountMeta<string> = string, TAccountUpdateAuthority extends string | IAccountMeta<string> = string, TRemainingAccounts extends readonly IAccountMeta<string>[] = []> = IInstruction<TProgram> & IInstructionWithData<Uint8Array> & IInstructionWithAccounts<[
    TAccountMetadata extends string ? WritableAccount<TAccountMetadata> : TAccountMetadata,
    TAccountUpdateAuthority extends string ? ReadonlySignerAccount<TAccountUpdateAuthority> & IAccountSignerMeta<TAccountUpdateAuthority> : TAccountUpdateAuthority,
    ...TRemainingAccounts
]>;
export type UpdateMetadataAccountV2InstructionData = {
    discriminator: number;
    data: Option<DataV2>;
    updateAuthority: Option<Address>;
    primarySaleHappened: Option<boolean>;
    isMutable: Option<boolean>;
};
export type UpdateMetadataAccountV2InstructionDataArgs = {
    data: OptionOrNullable<DataV2Args>;
    updateAuthority: OptionOrNullable<Address>;
    primarySaleHappened: OptionOrNullable<boolean>;
    isMutable: OptionOrNullable<boolean>;
};
export declare function getUpdateMetadataAccountV2InstructionDataEncoder(): Encoder<UpdateMetadataAccountV2InstructionDataArgs>;
export declare function getUpdateMetadataAccountV2InstructionDataDecoder(): Decoder<UpdateMetadataAccountV2InstructionData>;
export declare function getUpdateMetadataAccountV2InstructionDataCodec(): Codec<UpdateMetadataAccountV2InstructionDataArgs, UpdateMetadataAccountV2InstructionData>;
export type UpdateMetadataAccountV2Input<TAccountMetadata extends string = string, TAccountUpdateAuthority extends string = string> = {
    /** Metadata account */
    metadata: Address<TAccountMetadata>;
    /** Update authority key */
    updateAuthority: TransactionSigner<TAccountUpdateAuthority>;
    data: UpdateMetadataAccountV2InstructionDataArgs["data"];
    updateAuthorityArg: UpdateMetadataAccountV2InstructionDataArgs["updateAuthority"];
    primarySaleHappened: UpdateMetadataAccountV2InstructionDataArgs["primarySaleHappened"];
    isMutable: UpdateMetadataAccountV2InstructionDataArgs["isMutable"];
};
export declare function getUpdateMetadataAccountV2Instruction<TAccountMetadata extends string, TAccountUpdateAuthority extends string, TProgramAddress extends Address = typeof TOKEN_METADATA_PROGRAM_ADDRESS>(input: UpdateMetadataAccountV2Input<TAccountMetadata, TAccountUpdateAuthority>, config?: {
    programAddress?: TProgramAddress;
}): UpdateMetadataAccountV2Instruction<TProgramAddress, TAccountMetadata, TAccountUpdateAuthority>;
export type ParsedUpdateMetadataAccountV2Instruction<TProgram extends string = typeof TOKEN_METADATA_PROGRAM_ADDRESS, TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[]> = {
    programAddress: Address<TProgram>;
    accounts: {
        /** Metadata account */
        metadata: TAccountMetas[0];
        /** Update authority key */
        updateAuthority: TAccountMetas[1];
    };
    data: UpdateMetadataAccountV2InstructionData;
};
export declare function parseUpdateMetadataAccountV2Instruction<TProgram extends string, TAccountMetas extends readonly IAccountMeta[]>(instruction: IInstruction<TProgram> & IInstructionWithAccounts<TAccountMetas> & IInstructionWithData<Uint8Array>): ParsedUpdateMetadataAccountV2Instruction<TProgram, TAccountMetas>;
//# sourceMappingURL=updateMetadataAccountV2.d.ts.map