import { Address } from './encoding/address.js';
import * as encoding from './encoding/encoding.js';
import { NamedMapSchema } from './encoding/schema/index.js';
import { OnApplicationComplete, TransactionParams, TransactionType } from './types/transactions/base.js';
import { StateProof, StateProofMessage } from './stateproof.js';
import { HeartbeatProof } from './heartbeat.js';
export interface TransactionBoxReference {
readonly appIndex: bigint;
readonly name: Uint8Array;
}
export interface TransactionHoldingReference {
readonly assetIndex: bigint;
readonly address: Address;
}
export interface TransactionLocalsReference {
readonly appIndex: bigint;
readonly address: Address;
}
export interface TransactionResourceReference {
readonly address?: Readonly
;
readonly appIndex?: Readonly;
readonly assetIndex?: Readonly;
readonly holding?: Readonly;
readonly locals?: Readonly;
readonly box?: Readonly;
}
export interface PaymentTransactionFields {
readonly receiver: Address;
readonly amount: bigint;
readonly closeRemainderTo?: Address;
}
export interface KeyRegistrationTransactionFields {
readonly voteKey?: Uint8Array;
readonly selectionKey?: Uint8Array;
readonly stateProofKey?: Uint8Array;
readonly voteFirst?: bigint;
readonly voteLast?: bigint;
readonly voteKeyDilution?: bigint;
readonly nonParticipation: boolean;
}
export interface AssetConfigTransactionFields {
readonly assetIndex: bigint;
readonly total: bigint;
readonly decimals: number;
readonly defaultFrozen: boolean;
readonly manager?: Address;
readonly reserve?: Address;
readonly freeze?: Address;
readonly clawback?: Address;
readonly unitName?: string;
readonly assetName?: string;
readonly assetURL?: string;
readonly assetMetadataHash?: Uint8Array;
}
export interface AssetTransferTransactionFields {
readonly assetIndex: bigint;
readonly amount: bigint;
readonly assetSender?: Address;
readonly receiver: Address;
readonly closeRemainderTo?: Address;
}
export interface AssetFreezeTransactionFields {
readonly assetIndex: bigint;
readonly freezeAccount: Address;
readonly frozen: boolean;
}
export interface ApplicationTransactionFields {
readonly appIndex: bigint;
readonly onComplete: OnApplicationComplete;
readonly numLocalInts: number;
readonly numLocalByteSlices: number;
readonly numGlobalInts: number;
readonly numGlobalByteSlices: number;
readonly extraPages: number;
readonly approvalProgram: Uint8Array;
readonly clearProgram: Uint8Array;
readonly appArgs: ReadonlyArray;
readonly accounts: ReadonlyArray;
readonly foreignApps: ReadonlyArray;
readonly foreignAssets: ReadonlyArray;
readonly boxes: ReadonlyArray;
readonly access: ReadonlyArray;
readonly rejectVersion: number;
}
export interface StateProofTransactionFields {
readonly stateProofType: number;
readonly stateProof?: StateProof;
readonly message?: StateProofMessage;
}
export interface HeartbeatTransactionFields {
readonly address: Address;
readonly proof: HeartbeatProof;
readonly seed: Uint8Array;
readonly voteID: Uint8Array;
readonly keyDilution: bigint;
}
/**
* Transaction enables construction of Algorand transactions
* */
export declare class Transaction implements encoding.Encodable {
static readonly encodingSchema: NamedMapSchema;
/** common */
readonly type: TransactionType;
readonly sender: Address;
readonly note: Uint8Array;
readonly lease?: Uint8Array;
readonly rekeyTo?: Address;
/** group */
group?: Uint8Array;
/** suggested params */
fee: bigint;
readonly firstValid: bigint;
readonly lastValid: bigint;
readonly genesisID?: string;
readonly genesisHash?: Uint8Array;
/** type-specific fields */
readonly payment?: PaymentTransactionFields;
readonly keyreg?: KeyRegistrationTransactionFields;
readonly assetConfig?: AssetConfigTransactionFields;
readonly assetTransfer?: AssetTransferTransactionFields;
readonly assetFreeze?: AssetFreezeTransactionFields;
readonly applicationCall?: ApplicationTransactionFields;
readonly stateProof?: StateProofTransactionFields;
readonly heartbeat?: HeartbeatTransactionFields;
constructor(params: TransactionParams);
getEncodingSchema(): encoding.Schema;
toEncodingData(): Map;
static fromEncodingData(data: unknown): Transaction;
private estimateSize;
bytesToSign(): Uint8Array;
toByte(): Uint8Array;
rawSignTxn(sk: Uint8Array): Uint8Array;
signTxn(sk: Uint8Array): Uint8Array;
attachSignature(signerAddr: string | Address, signature: Uint8Array): Uint8Array;
rawTxID(): Uint8Array;
txID(): string;
}
/**
* encodeUnsignedTransaction takes a completed txnBuilder.Transaction object, such as from the makeFoo
* family of transactions, and converts it to a Buffer
* @param transactionObject - the completed Transaction object
*/
export declare function encodeUnsignedTransaction(transactionObject: Transaction): Uint8Array;
/**
* decodeUnsignedTransaction takes a Uint8Array (as if from encodeUnsignedTransaction) and converts it to a txnBuilder.Transaction object
* @param transactionBuffer - the Uint8Array containing a transaction
*/
export declare function decodeUnsignedTransaction(transactionBuffer: ArrayLike): Transaction;