import { Rpc, GetProgramAccountsApi, GetMultipleAccountsApi, Address, GetAccountInfoApi, GetTokenLargestAccountsApi } from '@solana/kit'; /** * Parameters for retrieving SNS domains owned by an address. * * @example * ```ts * const params: GetSnsDomainsForAddressParams = { rpc, address }; * ``` */ interface GetSnsDomainsForAddressParams { /** RPC client. */ rpc: Rpc; /** Owner address. */ address: Address; } /** * An SNS domain owned directly by a registry address. * * @example * ```ts * const domain: GetSnsDomainsForAddressResult = { * domain: "example", * domainAddress, * }; * ``` */ interface GetSnsDomainsForAddressResult { /** TLD-less domain name. */ domain: string; /** Domain account address. */ domainAddress: Address; } /** * Retrieves directly registry-owned top-level SNS domains for an address. * * Tokenized domains and subdomains are not included. Entries without reverse * lookup results are omitted. * * @param params Domain retrieval parameters * @param params.rpc RPC client implementing program account and multiple-account APIs * @param params.address Address whose directly registry-owned SNS domains are retrieved * @returns Domain records with names without a TLD suffix and domain addresses. * * @example * ```ts * const domains = await getSnsDomainsForAddress({ rpc, address }); * ``` */ declare const getSnsDomainsForAddress: ({ rpc, address, }: GetSnsDomainsForAddressParams) => Promise; /** * Parameters for retrieving SNS domain NFTs owned by an address. * * @example * ```ts * const params: GetSnsNftsForAddressParams = { rpc, address }; * ``` */ interface GetSnsNftsForAddressParams { /** RPC client. */ rpc: Rpc; /** Owner address. */ address: Address; } /** * An SNS domain NFT owned by an address. * * @example * ```ts * const domain: GetSnsNftsForAddressResult = { * domain: "example", * domainAddress, * mint, * }; * ``` */ interface GetSnsNftsForAddressResult { /** TLD-less domain name. */ domain: string; /** Domain account address. */ domainAddress: Address; /** NFT mint address. */ mint: Address; } /** * Retrieves the SNS domain NFTs owned by a given address. * * Returned `domain` values do not include a `.sns` or `.sol` suffix. * If NFT records cannot be retrieved or decoded, this function returns an empty * array instead of throwing. * * Entries without reverse lookup results are omitted. * * @param params Tokenized domain retrieval parameters * @param params.rpc RPC client implementing multiple-account and program account APIs * @param params.address Address whose SNS domain NFTs are retrieved * @returns Tokenized domain records with names without a TLD suffix, domain addresses, and mints. * * @example * ```ts * const domains = await getSnsNftsForAddress({ rpc, address }); * ``` */ declare const getSnsNftsForAddress: ({ rpc, address, }: GetSnsNftsForAddressParams) => Promise; /** * Parameters for retrieving a wallet's primary domain. * * @example * ```ts * const params: GetPrimaryDomainParams = { rpc, walletAddress }; * ``` */ interface GetPrimaryDomainParams { /** RPC client. */ rpc: Rpc; /** Wallet address. */ walletAddress: Address; } /** * A wallet's primary domain. * * @example * ```ts * const primary: GetPrimaryDomainResult = { * domainAddress, * domainName: "example", * stale: false, * }; * ``` */ interface GetPrimaryDomainResult { /** Primary domain account address. */ domainAddress: Address; /** TLD-less primary domain name. */ domainName: string; /** Whether the wallet is no longer the domain's effective owner. */ stale: boolean; } /** * Retrieves the primary SNS domain associated with a wallet address. * * Returned domain names omit the TLD suffix; subdomain primary names can * include parent labels such as `sub.parent`. * * @param params Primary domain retrieval parameters * @param params.rpc RPC client implementing account and token-largest-account APIs * @param params.walletAddress Wallet address whose primary domain is retrieved * @returns Primary domain address, domain name, and stale status. * * @example * ```ts * const primary = await getPrimaryDomain({ rpc, walletAddress }); * ``` */ declare const getPrimaryDomain: ({ rpc, walletAddress, }: GetPrimaryDomainParams) => Promise; /** * Parameters for retrieving primary domains for multiple wallets. * * @example * ```ts * const params: GetPrimaryDomainsBatchParams = { rpc, walletAddresses }; * ``` */ interface GetPrimaryDomainsBatchParams { /** RPC client. */ rpc: Rpc; /** Wallet addresses. */ walletAddresses: Address[]; } /** * Retrieves primary SNS domain names for multiple wallet addresses. * * Returned values are index-aligned with `walletAddresses`. Domain names omit * the TLD suffix; subdomain primary names can include parent labels such as * `sub.parent`. * * @param params Primary domain retrieval parameters * @param params.rpc RPC client implementing multiple-account and token-largest-account APIs * @param params.walletAddresses Wallet addresses whose primary domains are retrieved * @returns Primary domain names, or `undefined` when no valid non-stale primary domain is found. * * @example * ```ts * const domains = await getPrimaryDomainsBatch({ rpc, walletAddresses }); * ``` */ declare const getPrimaryDomainsBatch: ({ rpc, walletAddresses, }: GetPrimaryDomainsBatchParams) => Promise<(string | undefined)[]>; export { getPrimaryDomain, getPrimaryDomainsBatch, getSnsDomainsForAddress, getSnsNftsForAddress }; export type { GetPrimaryDomainParams, GetPrimaryDomainResult, GetPrimaryDomainsBatchParams, GetSnsDomainsForAddressParams, GetSnsDomainsForAddressResult, GetSnsNftsForAddressParams, GetSnsNftsForAddressResult };