import { type Address, type TransactionSigner } from "@solana/kit";
export type LegacyTokenProgramMonikers = "legacy" | "token";
export type TokenExtensionProgramMonikers = "token22" | "tokenExtension" | "tokenExtensions" | "token2022";
export type TokenProgramMonikers = LegacyTokenProgramMonikers | TokenExtensionProgramMonikers;
export declare const TOKEN_PROGRAM_ADDRESS: Address<"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA">;
/**
 * Derive the associated token account (ata) address for an owner and mint/tokenProgram
 *
 * @argument `mint` - the token mint itself
 * @argument `owner` - destination wallet address to own tokens from `mint`
 * @argument `tokenProgram` - token program that the token `mint` was created with
 *
 * - (default) {@link TOKEN_PROGRAM_ADDRESS} - the original SPL Token Program
 * - {@link TOKEN_2022_PROGRAM_ADDRESS} - the SPL Token Extensions Program (aka Token22)
 */
export declare function getAssociatedTokenAccountAddress(mint: Address | TransactionSigner, owner: Address | TransactionSigner, tokenProgram?: Address): Promise<Address>;
export declare function parseTokenProgramAddressOrMoniker(tokenProgram: Address | TokenProgramMonikers): Address;
export declare function assertIsSupportedTokenProgram(tokenProgram: Address): asserts tokenProgram is Address<typeof tokenProgram>;
/**
 * Check the provided program is one of the supported token programs.
 * Including setting the default to {@link TOKEN_PROGRAM_ADDRESS} (the original SPL token program)
 *
 * @example
 * ```
 * args.tokenProgram = checkedTokenProgramAddress(args.tokenProgram);
 * ```
 */
export declare function checkedTokenProgramAddress(tokenProgram?: Address | TokenProgramMonikers): Address;
//# sourceMappingURL=addresses.d.ts.map