import algosdk from 'algosdk'; import type { SignAndSendResult, WalletId } from './adapters/types.js'; import type { WalletScope } from './state/scope.svelte.js'; export type TransactionSigner = Readonly<{ address: string; walletId: WalletId; }>; export type SignOptions = Readonly<{ message?: string; }>; export type SubmissionGroupState = 'confirmed' | 'submitted-unconfirmed' | 'not-sent'; export type SubmissionGroupStatus = Readonly<{ index: number; txIds: readonly string[]; state: SubmissionGroupState; }>; export declare const SIGNER_API_VERSION: 1; export declare class SignerDisconnectedError extends Error { readonly address: string; readonly walletId: WalletId; readonly name = "SignerDisconnectedError"; readonly code = "SIGNER_DISCONNECTED"; constructor(address: string, walletId: WalletId); } export declare class SignerTransactionMismatchError extends Error { readonly sender: string; readonly address: string; readonly groupIndex: number; readonly transactionIndex: number; readonly name = "SignerTransactionMismatchError"; readonly code = "SIGNER_TRANSACTION_MISMATCH"; constructor(sender: string, address: string, groupIndex: number, transactionIndex: number); } export declare class SignerWatchOnlyError extends Error { readonly address: string; readonly walletId: WalletId; readonly name = "SignerWatchOnlyError"; readonly code = "SIGNER_WATCH_ONLY"; constructor(address: string, walletId: WalletId); } export declare class SignerResultMismatchError extends Error { readonly address: string; readonly walletId: WalletId; readonly index: number; readonly reason: 'count' | 'empty' | 'mismatch'; readonly name = "SignerResultMismatchError"; readonly code = "SIGNER_RESULT_MISMATCH"; constructor(address: string, walletId: WalletId, index: number, reason: 'count' | 'empty' | 'mismatch'); } /** * Every group's txIds are computed locally and can be looked up on chain. * A retry must re-check on chain every txId of every submitted-unconfirmed group * before re-signing, because that group may have landed. This includes a send * that errored without an algod rejection and a 400 "already in ledger" response. * A not-sent group was never attempted or algod definitely rejected the * transaction itself on this call only: if an earlier attempt sent the same signed * transactions, they may already be on chain, so check the txIds before re-signing. */ export declare class SignerSubmissionError extends Error { readonly groupIndex: number; readonly groups: readonly SubmissionGroupStatus[]; readonly cause: unknown; readonly name = "SignerSubmissionError"; readonly code = "SIGNER_SUBMISSION_FAILED"; constructor(groupIndex: number, groups: readonly SubmissionGroupStatus[], cause: unknown); } /** Sign with an explicit account in this scope, independently of UI selection. */ export declare function createSigning(scope: Pick): { signTransactions(groups: algosdk.Transaction[][], signer: TransactionSigner, options?: SignOptions): Promise; signAndSendTransactions(groups: algosdk.Transaction[][], signer: TransactionSigner, options?: SignOptions): Promise; };