import { Chain, Network, Platform, PlatformToChains, ProtocolName } from "@wormhole-foundation/sdk-base"; import { AttestationId, AttestationReceipt, ChainContext, CircleTransferDetails, GatewayTransferDetails, Signer, TokenId, TokenTransferDetails, TransactionId, TxHash } from "@wormhole-foundation/sdk-definitions"; import { Wormhole } from "./wormhole"; export type TransferRequest = PN extends "TokenBridge" | "AutomaticTokenBridge" ? TokenTransferDetails : PN extends "CircleBridge" | "AutomaticCircleBridge" ? CircleTransferDetails : PN extends "IbcBridge" ? GatewayTransferDetails : never; export declare enum TransferState { Failed = -1, Created = 0, SourceInitiated = 1, SourceFinalized = 2, Attested = 3, DestinationInitiated = 4, DestinationFinalized = 5 } interface BaseTransferReceipt { protocol: PN; from: SC; to: DC; request: TransferRequest; state: TransferState; } export interface CreatedTransferReceipt extends BaseTransferReceipt { state: TransferState.Created; } export interface SourceInitiatedTransferReceipt extends BaseTransferReceipt { state: TransferState.SourceInitiated; originTxs: TransactionId[]; } export interface SourceFinalizedTransferReceipt extends BaseTransferReceipt { state: TransferState.SourceFinalized; originTxs: TransactionId[]; attestation: AttestationReceipt; } export interface AttestedTransferReceipt extends BaseTransferReceipt { state: TransferState.Attested; originTxs: TransactionId[]; attestation: Required>; } export interface CompletedTransferReceipt extends BaseTransferReceipt { state: TransferState.DestinationInitiated | TransferState.DestinationFinalized; originTxs: TransactionId[]; attestation: AttestationReceipt; destinationTxs?: TransactionId[]; } export declare function isAttested(receipt: TransferReceipt): receipt is AttestedTransferReceipt; export declare function isSourceInitiated(receipt: TransferReceipt): receipt is SourceInitiatedTransferReceipt; export declare function isSourceFinalized(receipt: TransferReceipt): receipt is SourceFinalizedTransferReceipt; export type TransferReceipt = CreatedTransferReceipt | SourceInitiatedTransferReceipt | SourceFinalizedTransferReceipt | AttestedTransferReceipt | CompletedTransferReceipt; export type TransferQuote = { sourceToken: { token: TokenId; amount: bigint; }; destinationToken: { token: TokenId; amount: bigint; }; relayFee?: { token: TokenId; amount: bigint; }; destinationNativeGas?: bigint; }; export interface TransferProtocol { isTransferComplete>(toChain: ChainContext, attestation: AttestationId): Promise; validateTransferDetails(wh: Wormhole, transfer: TransferRequest): Promise; quoteTransfer(xfer: WormholeTransfer): Promise; getReceipt(xfer: WormholeTransfer): TransferReceipt; track(wh: Wormhole, xfer: WormholeTransfer, timeout: number): AsyncGenerator, unknown, unknown>; } export interface WormholeTransfer { transfer: TransferRequest; getTransferState(): TransferState; initiateTransfer(signer: Signer): Promise; fetchAttestation(timeout?: number): Promise; completeTransfer(signer: Signer): Promise; } export {}; //# sourceMappingURL=wormholeTransfer.d.ts.map