import { Account, SolanaAccount } from "../../accounts/solana/types.js";
import { ListSolanaTokenBalancesNetwork, OpenApiSolanaMethods, SendSolanaTransactionBody, SendSolanaTransactionBodyNetwork, UpdateSolanaAccountBody } from "../../openapi-client/index.js";
/**
 * The SolanaClient type, where all OpenApiSolanaMethods methods are wrapped.
 */
export type SolanaClientInterface = Omit<typeof OpenApiSolanaMethods, "createSolanaAccount" | "getSolanaAccount" | "getSolanaAccountByName" | "updateSolanaAccount" | "listSolanaAccounts" | "requestSolanaFaucet" | "signSolanaMessage" | "signSolanaTransaction" | "updateSolanaAccount" | "exportSolanaAccount" | "exportSolanaAccountByName" | "importSolanaAccount" | "listSolanaTokenBalances" | "sendSolanaTransaction"> & {
    createAccount: (options: CreateAccountOptions) => Promise<Account>;
    exportAccount: (options: ExportAccountOptions) => Promise<string>;
    importAccount: (options: ImportAccountOptions) => Promise<SolanaAccount>;
    getAccount: (options: GetAccountOptions) => Promise<Account>;
    getOrCreateAccount: (options: GetOrCreateAccountOptions) => Promise<Account>;
    updateAccount: (options: UpdateSolanaAccountOptions) => Promise<Account>;
    listAccounts: (options: ListAccountsOptions) => Promise<ListAccountsResult>;
    requestFaucet: (options: RequestFaucetOptions) => Promise<SignatureResult>;
    signMessage: (options: SignMessageOptions) => Promise<SignatureResult>;
    signTransaction: (options: SignTransactionOptions) => Promise<SignatureResult>;
    listTokenBalances: (options: ListTokenBalancesOptions) => Promise<ListTokenBalancesResult>;
    sendTransaction: (options: SendSolanaTransactionBody) => Promise<SignatureResult>;
};
/**
 * A Solana signature result.
 */
export interface SignatureResult {
    /** The signature. */
    signature: string;
}
/**
 * Options for creating a Solana account.
 */
export interface CreateAccountOptions {
    /** The name of the account. */
    name?: string;
    /** The policy ID to apply to the account. */
    accountPolicy?: string;
    /** The idempotency key. */
    idempotencyKey?: string;
}
/**
 * Options for exporting a Solana account.
 */
export interface ExportAccountOptions {
    /** The address of the account. */
    address?: string;
    /** The name of the account. */
    name?: string;
    /** The idempotency key. */
    idempotencyKey?: string;
}
/**
 * Options for getting a Solana account.
 */
export interface GetAccountOptions {
    /** The address of the account. */
    address?: string;
    /** The name of the account. */
    name?: string;
}
/**
 * Options for getting a Solana account.
 */
export interface GetOrCreateAccountOptions {
    /** The name of the account. */
    name: string;
}
/**
 * Options for creating a SOL server account.
 */
export interface UpdateSolanaAccountOptions {
    /** The address of the account. */
    address: string;
    /** The updates to apply to the account */
    update: UpdateSolanaAccountBody;
    /** The idempotency key. */
    idempotencyKey?: string;
}
/**
 * Options for listing Solana accounts.
 */
export interface ListAccountsOptions {
    /** The page size. */
    pageSize?: number;
    /** The page token. */
    pageToken?: string;
}
/**
 * The result of listing Solana accounts.
 */
export interface ListAccountsResult {
    /** The accounts. */
    accounts: SolanaAccount[];
    /**
     * The token for the next page of accounts, if any.
     */
    nextPageToken?: string;
}
/**
 * Options for requesting funds from a Solana faucet.
 */
export interface RequestFaucetOptions {
    /** The address of the account. */
    address: string;
    /** The token to request funds for. */
    token: "sol" | "usdc";
    /** The idempotency key. */
    idempotencyKey?: string;
}
/**
 * Options for signing a Solana message.
 */
export interface SignMessageOptions {
    /** The address of the account. */
    address: string;
    /** The message to sign. */
    message: string;
    /** The idempotency key. */
    idempotencyKey?: string;
}
/**
 * Options for signing a Solana transaction.
 */
export interface SignTransactionOptions {
    /** The address of the account. */
    address: string;
    /** The base64 encoded transaction to sign. */
    transaction: string;
    /** The idempotency key. */
    idempotencyKey?: string;
}
/**
 * Options for importing a Solana account.
 */
export interface ImportAccountOptions {
    /** The public RSA key used to encrypt the private key when importing a Solana account. */
    encryptionPublicKey?: string;
    /** The name of the account. */
    name?: string;
    /** The idempotency key. */
    idempotencyKey?: string;
    /** The private key of the account - can be a base58 encoded string or raw bytes. */
    privateKey: string | Uint8Array;
}
/**
 * Options for listing Solana token balances.
 */
export interface ListTokenBalancesOptions {
    /** The address of the account. */
    address: string;
    /** The network to list token balances for. */
    network?: ListSolanaTokenBalancesNetwork;
    /** The page size. */
    pageSize?: number;
    /** The page token. */
    pageToken?: string;
}
/**
 * Options for sending a Solana transaction.
 */
export interface SendTransactionOptions {
    /** The network to send the transaction to. */
    network: SendSolanaTransactionBodyNetwork;
    /** The base64 encoded transaction to send. */
    transaction: string;
    /** The idempotency key. */
    idempotencyKey?: string;
}
/**
 * The result of sending a Solana transaction.
 */
export interface TransactionResult {
    /** The signature of the transaction base58 encoded. */
    signature: string;
}
export interface SolanaTokenAmount {
    /** The amount of the token. */
    amount: bigint;
    /** The number of decimals in the token. */
    decimals: number;
}
export interface SolanaToken {
    /** The token address. */
    mintAddress: string;
    /** The token name. */
    name?: string;
    /** The token symbol. */
    symbol?: string;
}
/**
 * A Solana token balance.
 */
export interface SolanaTokenBalance {
    /** The amount of the token. */
    amount: SolanaTokenAmount;
    /** The token. */
    token: SolanaToken;
}
/**
 * The result of listing Solana token balances.
 */
export interface ListTokenBalancesResult {
    /** The token balances. */
    balances: SolanaTokenBalance[];
    /**
     * The next page token to paginate through the token balances.
     * If undefined, there are no more token balances to paginate through.
     */
    nextPageToken?: string;
}
//# sourceMappingURL=solana.types.d.ts.map