@usewhisk/cctp 0.0.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +218 -0
- package/dist/abi.cjs +239 -0
- package/dist/abi.cjs.map +1 -0
- package/dist/abi.d.cts +401 -0
- package/dist/abi.d.ts +401 -0
- package/dist/abi.js +234 -0
- package/dist/abi.js.map +1 -0
- package/dist/attestation-D52iUV0y.d.cts +188 -0
- package/dist/attestation-D52iUV0y.d.ts +188 -0
- package/dist/chains.cjs +1621 -0
- package/dist/chains.cjs.map +1 -0
- package/dist/chains.d.cts +2 -0
- package/dist/chains.d.ts +2 -0
- package/dist/chains.js +1514 -0
- package/dist/chains.js.map +1 -0
- package/dist/index-BIerSvES.d.cts +4070 -0
- package/dist/index-O0Ms-Fa5.d.ts +4070 -0
- package/dist/index.cjs +4018 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +947 -0
- package/dist/index.d.ts +947 -0
- package/dist/index.js +3799 -0
- package/dist/index.js.map +1 -0
- package/dist/iris.cjs +557 -0
- package/dist/iris.cjs.map +1 -0
- package/dist/iris.d.cts +205 -0
- package/dist/iris.d.ts +205 -0
- package/dist/iris.js +538 -0
- package/dist/iris.js.map +1 -0
- package/package.json +85 -10
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
type Network = "mainnet" | "testnet";
|
|
2
|
+
type Ecosystem = "evm" | "solana" | "stellar" | "starknet";
|
|
3
|
+
/** Assigned by Circle. Mainnet and testnet share a domain; Iris tells them apart by host. */
|
|
4
|
+
type CctpDomain = number;
|
|
5
|
+
type EvmChainId = number;
|
|
6
|
+
type Address = `0x${string}`;
|
|
7
|
+
type SolanaPubkey = string;
|
|
8
|
+
type SolanaCluster = "mainnet-beta" | "devnet";
|
|
9
|
+
/** G (account), M (muxed account) or C (contract). */
|
|
10
|
+
type StellarStrkey = string;
|
|
11
|
+
type StellarNetwork = "public" | "testnet";
|
|
12
|
+
type StarknetNetwork = "mainnet" | "sepolia";
|
|
13
|
+
type StarknetFelt = `0x${string}`;
|
|
14
|
+
/** From Circle's CCTP tables, per chain. */
|
|
15
|
+
interface ChainCapabilities {
|
|
16
|
+
/** Fast Transfer is offered with this chain as the source. */
|
|
17
|
+
fastSource: boolean;
|
|
18
|
+
/** Circle's Forwarding Service can mint on this chain. */
|
|
19
|
+
forwardingDestination: boolean;
|
|
20
|
+
/** Iris quotes an upfront fee for burns from this chain. */
|
|
21
|
+
upfrontFeeSource: boolean;
|
|
22
|
+
/**
|
|
23
|
+
* TokenMessengerV2 has `getMinFeeAmount`, which can make a Standard burn
|
|
24
|
+
* cost more than Iris says. On the other chains the call reverts.
|
|
25
|
+
*/
|
|
26
|
+
standardFeeSwitch: boolean;
|
|
27
|
+
}
|
|
28
|
+
interface ChainBase {
|
|
29
|
+
/** Circle App Kit `Blockchain` string, such as "Arc" or "Base_Sepolia". */
|
|
30
|
+
id: string;
|
|
31
|
+
label: string;
|
|
32
|
+
network: Network;
|
|
33
|
+
cctpDomain: CctpDomain;
|
|
34
|
+
usdcDecimals: 6 | 7;
|
|
35
|
+
nativeCurrency: {
|
|
36
|
+
symbol: string;
|
|
37
|
+
decimals: number;
|
|
38
|
+
};
|
|
39
|
+
defaultRpcUrls: readonly string[];
|
|
40
|
+
explorerUrl: string;
|
|
41
|
+
/** Appended to explorer links, for explorers that serve several networks. */
|
|
42
|
+
explorerQuery?: string;
|
|
43
|
+
capabilities: ChainCapabilities;
|
|
44
|
+
}
|
|
45
|
+
interface EvmChain extends ChainBase {
|
|
46
|
+
ecosystem: "evm";
|
|
47
|
+
evmChainId: EvmChainId;
|
|
48
|
+
usdc: Address;
|
|
49
|
+
tokenMessenger: Address;
|
|
50
|
+
messageTransmitter: Address;
|
|
51
|
+
/** Present exactly when `capabilities.upfrontFeeSource` is true. */
|
|
52
|
+
tokenMessengerWithFees?: Address;
|
|
53
|
+
}
|
|
54
|
+
interface SolanaChain extends ChainBase {
|
|
55
|
+
ecosystem: "solana";
|
|
56
|
+
cluster: SolanaCluster;
|
|
57
|
+
usdc: SolanaPubkey;
|
|
58
|
+
/** Solana merges TokenMessenger and TokenMinter into one program. */
|
|
59
|
+
tokenMessengerMinter: SolanaPubkey;
|
|
60
|
+
messageTransmitter: SolanaPubkey;
|
|
61
|
+
}
|
|
62
|
+
interface StellarChain extends ChainBase {
|
|
63
|
+
ecosystem: "stellar";
|
|
64
|
+
stellarNetwork: StellarNetwork;
|
|
65
|
+
networkPassphrase: string;
|
|
66
|
+
usdcIssuer: StellarStrkey;
|
|
67
|
+
/** The USDC Stellar Asset Contract, derived from the issuer and passphrase. */
|
|
68
|
+
usdc: StellarStrkey;
|
|
69
|
+
tokenMessengerMinter: StellarStrkey;
|
|
70
|
+
messageTransmitter: StellarStrkey;
|
|
71
|
+
/**
|
|
72
|
+
* Every burn to Stellar must name this contract as both `mintRecipient` and
|
|
73
|
+
* `destinationCaller`, with the real recipient in hookData. A user key as
|
|
74
|
+
* `mintRecipient` loses the funds.
|
|
75
|
+
*/
|
|
76
|
+
cctpForwarder: StellarStrkey;
|
|
77
|
+
}
|
|
78
|
+
interface StarknetChain extends ChainBase {
|
|
79
|
+
ecosystem: "starknet";
|
|
80
|
+
starknetNetwork: StarknetNetwork;
|
|
81
|
+
/** Shortstring felt, such as `SN_SEPOLIA`, that wallets check when signing. */
|
|
82
|
+
chainId: StarknetFelt;
|
|
83
|
+
usdc: StarknetFelt;
|
|
84
|
+
tokenMessengerMinter: StarknetFelt;
|
|
85
|
+
messageTransmitter: StarknetFelt;
|
|
86
|
+
}
|
|
87
|
+
type CctpChain = EvmChain | SolanaChain | StellarChain | StarknetChain;
|
|
88
|
+
|
|
89
|
+
/** Fast Transfer attests after a block or two, before hard finality. */
|
|
90
|
+
declare const FINALITY_FAST: 1000;
|
|
91
|
+
/** Standard Transfer attests after hard finality. */
|
|
92
|
+
declare const FINALITY_STANDARD: 2000;
|
|
93
|
+
type FinalityThreshold = typeof FINALITY_FAST | typeof FINALITY_STANDARD;
|
|
94
|
+
type TransferSpeed = "fast" | "standard";
|
|
95
|
+
/**
|
|
96
|
+
* Forwarder fee levels returned per finality level, in USDC subunits.
|
|
97
|
+
* Circle recommends `med` or higher.
|
|
98
|
+
*/
|
|
99
|
+
type ForwarderFeeTier = {
|
|
100
|
+
low: bigint;
|
|
101
|
+
med: bigint;
|
|
102
|
+
high: bigint;
|
|
103
|
+
};
|
|
104
|
+
/**
|
|
105
|
+
* A Fast or Standard row of the `/v2/burn/USDC/fees/{src}/{dst}` response, parsed.
|
|
106
|
+
*
|
|
107
|
+
* `minimumFee` is in hundredths of a basis point: Iris's `1.3` is `130n`.
|
|
108
|
+
* `forwardFee` is present only when `?forward=true` is set on the request.
|
|
109
|
+
*/
|
|
110
|
+
type BurnFeeTier = {
|
|
111
|
+
finalityThreshold: FinalityThreshold;
|
|
112
|
+
minimumFee: bigint;
|
|
113
|
+
forwardFee?: ForwarderFeeTier;
|
|
114
|
+
};
|
|
115
|
+
/** Iris never reports a failed attestation; a slow one stays pending. */
|
|
116
|
+
type IrisAttestationStatus = "pending_confirmations" | "complete";
|
|
117
|
+
/** Why a message is slower than asked. None of these is a failure. */
|
|
118
|
+
type IrisDelayReason = "insufficient_fee" | "amount_above_max" | "insufficient_allowance_available";
|
|
119
|
+
/**
|
|
120
|
+
* Circle Orbit forwarder lifecycle status. Present only when the burn
|
|
121
|
+
* was triggered with the forwarder hookData.
|
|
122
|
+
*
|
|
123
|
+
* - `PENDING`: relayer is processing.
|
|
124
|
+
* - `CONFIRMED`: relayer submitted the mint, waiting on finality.
|
|
125
|
+
* - `COMPLETE`: mint finalized.
|
|
126
|
+
* - `FAILED`: relayer rejected; fall back to manual mint.
|
|
127
|
+
*/
|
|
128
|
+
type ForwardState = "PENDING" | "CONFIRMED" | "COMPLETE" | "FAILED";
|
|
129
|
+
/**
|
|
130
|
+
* Single message returned by `/v2/messages/{srcDomain}`.
|
|
131
|
+
*/
|
|
132
|
+
type IrisMessage = {
|
|
133
|
+
/** Raw 0x-prefixed CCTP message bytes; pass to receiveMessage. */
|
|
134
|
+
message: `0x${string}`;
|
|
135
|
+
/** Raw 0x-prefixed attestation bytes; pass to receiveMessage. */
|
|
136
|
+
attestation: `0x${string}`;
|
|
137
|
+
/** Decimal string. */
|
|
138
|
+
eventNonce: string;
|
|
139
|
+
status: IrisAttestationStatus;
|
|
140
|
+
cctpVersion: 2;
|
|
141
|
+
/** Present when burn included forwarder hookData. */
|
|
142
|
+
forwardState?: ForwardState | null;
|
|
143
|
+
/** Destination tx hash when forwardState is CONFIRMED or COMPLETE. */
|
|
144
|
+
forwardTxHash?: string | null;
|
|
145
|
+
delayReason?: IrisDelayReason | null;
|
|
146
|
+
/** Decoded message and message body, if Iris can decode them. */
|
|
147
|
+
decodedMessage?: {
|
|
148
|
+
sourceDomain: string;
|
|
149
|
+
destinationDomain: string;
|
|
150
|
+
nonce: `0x${string}`;
|
|
151
|
+
sender: string | null;
|
|
152
|
+
recipient: string | null;
|
|
153
|
+
destinationCaller: string | null;
|
|
154
|
+
minFinalityThreshold: string;
|
|
155
|
+
finalityThresholdExecuted: string;
|
|
156
|
+
messageBody: `0x${string}`;
|
|
157
|
+
decodedMessageBody?: {
|
|
158
|
+
burnToken: string | null;
|
|
159
|
+
mintRecipient: string | null;
|
|
160
|
+
amount: string;
|
|
161
|
+
messageSender: string | null;
|
|
162
|
+
maxFee: string;
|
|
163
|
+
feeExecuted: string;
|
|
164
|
+
expirationBlock: string;
|
|
165
|
+
hookData: `0x${string}` | null;
|
|
166
|
+
};
|
|
167
|
+
};
|
|
168
|
+
};
|
|
169
|
+
type IrisMessagesResponse = {
|
|
170
|
+
messages: IrisMessage[];
|
|
171
|
+
};
|
|
172
|
+
/**
|
|
173
|
+
* Filters for getMessages. Pass at least one of `transactionHash` or `nonce`.
|
|
174
|
+
*/
|
|
175
|
+
type GetMessagesQuery = {
|
|
176
|
+
sourceDomain: CctpDomain;
|
|
177
|
+
transactionHash?: string;
|
|
178
|
+
nonce?: string;
|
|
179
|
+
};
|
|
180
|
+
|
|
181
|
+
type SecondsRange = {
|
|
182
|
+
min: number;
|
|
183
|
+
max: number;
|
|
184
|
+
};
|
|
185
|
+
/** How long Circle takes to attest a burn from `chain`. The mint comes after. */
|
|
186
|
+
declare function attestationSeconds(chain: CctpChain, speed: TransferSpeed): SecondsRange;
|
|
187
|
+
|
|
188
|
+
export { type Address as A, type BurnFeeTier as B, type CctpChain as C, type EvmChain as E, type ForwarderFeeTier as F, type GetMessagesQuery as G, type IrisAttestationStatus as I, type Network as N, type StarknetChain as S, type TransferSpeed as T, type StellarChain as a, type FinalityThreshold as b, type StarknetFelt as c, type SolanaChain as d, type CctpDomain as e, type ChainCapabilities as f, type Ecosystem as g, type EvmChainId as h, FINALITY_FAST as i, FINALITY_STANDARD as j, type ForwardState as k, type IrisDelayReason as l, type IrisMessage as m, type IrisMessagesResponse as n, type SecondsRange as o, type SolanaCluster as p, type SolanaPubkey as q, type StarknetNetwork as r, type StellarNetwork as s, type StellarStrkey as t, attestationSeconds as u };
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
type Network = "mainnet" | "testnet";
|
|
2
|
+
type Ecosystem = "evm" | "solana" | "stellar" | "starknet";
|
|
3
|
+
/** Assigned by Circle. Mainnet and testnet share a domain; Iris tells them apart by host. */
|
|
4
|
+
type CctpDomain = number;
|
|
5
|
+
type EvmChainId = number;
|
|
6
|
+
type Address = `0x${string}`;
|
|
7
|
+
type SolanaPubkey = string;
|
|
8
|
+
type SolanaCluster = "mainnet-beta" | "devnet";
|
|
9
|
+
/** G (account), M (muxed account) or C (contract). */
|
|
10
|
+
type StellarStrkey = string;
|
|
11
|
+
type StellarNetwork = "public" | "testnet";
|
|
12
|
+
type StarknetNetwork = "mainnet" | "sepolia";
|
|
13
|
+
type StarknetFelt = `0x${string}`;
|
|
14
|
+
/** From Circle's CCTP tables, per chain. */
|
|
15
|
+
interface ChainCapabilities {
|
|
16
|
+
/** Fast Transfer is offered with this chain as the source. */
|
|
17
|
+
fastSource: boolean;
|
|
18
|
+
/** Circle's Forwarding Service can mint on this chain. */
|
|
19
|
+
forwardingDestination: boolean;
|
|
20
|
+
/** Iris quotes an upfront fee for burns from this chain. */
|
|
21
|
+
upfrontFeeSource: boolean;
|
|
22
|
+
/**
|
|
23
|
+
* TokenMessengerV2 has `getMinFeeAmount`, which can make a Standard burn
|
|
24
|
+
* cost more than Iris says. On the other chains the call reverts.
|
|
25
|
+
*/
|
|
26
|
+
standardFeeSwitch: boolean;
|
|
27
|
+
}
|
|
28
|
+
interface ChainBase {
|
|
29
|
+
/** Circle App Kit `Blockchain` string, such as "Arc" or "Base_Sepolia". */
|
|
30
|
+
id: string;
|
|
31
|
+
label: string;
|
|
32
|
+
network: Network;
|
|
33
|
+
cctpDomain: CctpDomain;
|
|
34
|
+
usdcDecimals: 6 | 7;
|
|
35
|
+
nativeCurrency: {
|
|
36
|
+
symbol: string;
|
|
37
|
+
decimals: number;
|
|
38
|
+
};
|
|
39
|
+
defaultRpcUrls: readonly string[];
|
|
40
|
+
explorerUrl: string;
|
|
41
|
+
/** Appended to explorer links, for explorers that serve several networks. */
|
|
42
|
+
explorerQuery?: string;
|
|
43
|
+
capabilities: ChainCapabilities;
|
|
44
|
+
}
|
|
45
|
+
interface EvmChain extends ChainBase {
|
|
46
|
+
ecosystem: "evm";
|
|
47
|
+
evmChainId: EvmChainId;
|
|
48
|
+
usdc: Address;
|
|
49
|
+
tokenMessenger: Address;
|
|
50
|
+
messageTransmitter: Address;
|
|
51
|
+
/** Present exactly when `capabilities.upfrontFeeSource` is true. */
|
|
52
|
+
tokenMessengerWithFees?: Address;
|
|
53
|
+
}
|
|
54
|
+
interface SolanaChain extends ChainBase {
|
|
55
|
+
ecosystem: "solana";
|
|
56
|
+
cluster: SolanaCluster;
|
|
57
|
+
usdc: SolanaPubkey;
|
|
58
|
+
/** Solana merges TokenMessenger and TokenMinter into one program. */
|
|
59
|
+
tokenMessengerMinter: SolanaPubkey;
|
|
60
|
+
messageTransmitter: SolanaPubkey;
|
|
61
|
+
}
|
|
62
|
+
interface StellarChain extends ChainBase {
|
|
63
|
+
ecosystem: "stellar";
|
|
64
|
+
stellarNetwork: StellarNetwork;
|
|
65
|
+
networkPassphrase: string;
|
|
66
|
+
usdcIssuer: StellarStrkey;
|
|
67
|
+
/** The USDC Stellar Asset Contract, derived from the issuer and passphrase. */
|
|
68
|
+
usdc: StellarStrkey;
|
|
69
|
+
tokenMessengerMinter: StellarStrkey;
|
|
70
|
+
messageTransmitter: StellarStrkey;
|
|
71
|
+
/**
|
|
72
|
+
* Every burn to Stellar must name this contract as both `mintRecipient` and
|
|
73
|
+
* `destinationCaller`, with the real recipient in hookData. A user key as
|
|
74
|
+
* `mintRecipient` loses the funds.
|
|
75
|
+
*/
|
|
76
|
+
cctpForwarder: StellarStrkey;
|
|
77
|
+
}
|
|
78
|
+
interface StarknetChain extends ChainBase {
|
|
79
|
+
ecosystem: "starknet";
|
|
80
|
+
starknetNetwork: StarknetNetwork;
|
|
81
|
+
/** Shortstring felt, such as `SN_SEPOLIA`, that wallets check when signing. */
|
|
82
|
+
chainId: StarknetFelt;
|
|
83
|
+
usdc: StarknetFelt;
|
|
84
|
+
tokenMessengerMinter: StarknetFelt;
|
|
85
|
+
messageTransmitter: StarknetFelt;
|
|
86
|
+
}
|
|
87
|
+
type CctpChain = EvmChain | SolanaChain | StellarChain | StarknetChain;
|
|
88
|
+
|
|
89
|
+
/** Fast Transfer attests after a block or two, before hard finality. */
|
|
90
|
+
declare const FINALITY_FAST: 1000;
|
|
91
|
+
/** Standard Transfer attests after hard finality. */
|
|
92
|
+
declare const FINALITY_STANDARD: 2000;
|
|
93
|
+
type FinalityThreshold = typeof FINALITY_FAST | typeof FINALITY_STANDARD;
|
|
94
|
+
type TransferSpeed = "fast" | "standard";
|
|
95
|
+
/**
|
|
96
|
+
* Forwarder fee levels returned per finality level, in USDC subunits.
|
|
97
|
+
* Circle recommends `med` or higher.
|
|
98
|
+
*/
|
|
99
|
+
type ForwarderFeeTier = {
|
|
100
|
+
low: bigint;
|
|
101
|
+
med: bigint;
|
|
102
|
+
high: bigint;
|
|
103
|
+
};
|
|
104
|
+
/**
|
|
105
|
+
* A Fast or Standard row of the `/v2/burn/USDC/fees/{src}/{dst}` response, parsed.
|
|
106
|
+
*
|
|
107
|
+
* `minimumFee` is in hundredths of a basis point: Iris's `1.3` is `130n`.
|
|
108
|
+
* `forwardFee` is present only when `?forward=true` is set on the request.
|
|
109
|
+
*/
|
|
110
|
+
type BurnFeeTier = {
|
|
111
|
+
finalityThreshold: FinalityThreshold;
|
|
112
|
+
minimumFee: bigint;
|
|
113
|
+
forwardFee?: ForwarderFeeTier;
|
|
114
|
+
};
|
|
115
|
+
/** Iris never reports a failed attestation; a slow one stays pending. */
|
|
116
|
+
type IrisAttestationStatus = "pending_confirmations" | "complete";
|
|
117
|
+
/** Why a message is slower than asked. None of these is a failure. */
|
|
118
|
+
type IrisDelayReason = "insufficient_fee" | "amount_above_max" | "insufficient_allowance_available";
|
|
119
|
+
/**
|
|
120
|
+
* Circle Orbit forwarder lifecycle status. Present only when the burn
|
|
121
|
+
* was triggered with the forwarder hookData.
|
|
122
|
+
*
|
|
123
|
+
* - `PENDING`: relayer is processing.
|
|
124
|
+
* - `CONFIRMED`: relayer submitted the mint, waiting on finality.
|
|
125
|
+
* - `COMPLETE`: mint finalized.
|
|
126
|
+
* - `FAILED`: relayer rejected; fall back to manual mint.
|
|
127
|
+
*/
|
|
128
|
+
type ForwardState = "PENDING" | "CONFIRMED" | "COMPLETE" | "FAILED";
|
|
129
|
+
/**
|
|
130
|
+
* Single message returned by `/v2/messages/{srcDomain}`.
|
|
131
|
+
*/
|
|
132
|
+
type IrisMessage = {
|
|
133
|
+
/** Raw 0x-prefixed CCTP message bytes; pass to receiveMessage. */
|
|
134
|
+
message: `0x${string}`;
|
|
135
|
+
/** Raw 0x-prefixed attestation bytes; pass to receiveMessage. */
|
|
136
|
+
attestation: `0x${string}`;
|
|
137
|
+
/** Decimal string. */
|
|
138
|
+
eventNonce: string;
|
|
139
|
+
status: IrisAttestationStatus;
|
|
140
|
+
cctpVersion: 2;
|
|
141
|
+
/** Present when burn included forwarder hookData. */
|
|
142
|
+
forwardState?: ForwardState | null;
|
|
143
|
+
/** Destination tx hash when forwardState is CONFIRMED or COMPLETE. */
|
|
144
|
+
forwardTxHash?: string | null;
|
|
145
|
+
delayReason?: IrisDelayReason | null;
|
|
146
|
+
/** Decoded message and message body, if Iris can decode them. */
|
|
147
|
+
decodedMessage?: {
|
|
148
|
+
sourceDomain: string;
|
|
149
|
+
destinationDomain: string;
|
|
150
|
+
nonce: `0x${string}`;
|
|
151
|
+
sender: string | null;
|
|
152
|
+
recipient: string | null;
|
|
153
|
+
destinationCaller: string | null;
|
|
154
|
+
minFinalityThreshold: string;
|
|
155
|
+
finalityThresholdExecuted: string;
|
|
156
|
+
messageBody: `0x${string}`;
|
|
157
|
+
decodedMessageBody?: {
|
|
158
|
+
burnToken: string | null;
|
|
159
|
+
mintRecipient: string | null;
|
|
160
|
+
amount: string;
|
|
161
|
+
messageSender: string | null;
|
|
162
|
+
maxFee: string;
|
|
163
|
+
feeExecuted: string;
|
|
164
|
+
expirationBlock: string;
|
|
165
|
+
hookData: `0x${string}` | null;
|
|
166
|
+
};
|
|
167
|
+
};
|
|
168
|
+
};
|
|
169
|
+
type IrisMessagesResponse = {
|
|
170
|
+
messages: IrisMessage[];
|
|
171
|
+
};
|
|
172
|
+
/**
|
|
173
|
+
* Filters for getMessages. Pass at least one of `transactionHash` or `nonce`.
|
|
174
|
+
*/
|
|
175
|
+
type GetMessagesQuery = {
|
|
176
|
+
sourceDomain: CctpDomain;
|
|
177
|
+
transactionHash?: string;
|
|
178
|
+
nonce?: string;
|
|
179
|
+
};
|
|
180
|
+
|
|
181
|
+
type SecondsRange = {
|
|
182
|
+
min: number;
|
|
183
|
+
max: number;
|
|
184
|
+
};
|
|
185
|
+
/** How long Circle takes to attest a burn from `chain`. The mint comes after. */
|
|
186
|
+
declare function attestationSeconds(chain: CctpChain, speed: TransferSpeed): SecondsRange;
|
|
187
|
+
|
|
188
|
+
export { type Address as A, type BurnFeeTier as B, type CctpChain as C, type EvmChain as E, type ForwarderFeeTier as F, type GetMessagesQuery as G, type IrisAttestationStatus as I, type Network as N, type StarknetChain as S, type TransferSpeed as T, type StellarChain as a, type FinalityThreshold as b, type StarknetFelt as c, type SolanaChain as d, type CctpDomain as e, type ChainCapabilities as f, type Ecosystem as g, type EvmChainId as h, FINALITY_FAST as i, FINALITY_STANDARD as j, type ForwardState as k, type IrisDelayReason as l, type IrisMessage as m, type IrisMessagesResponse as n, type SecondsRange as o, type SolanaCluster as p, type SolanaPubkey as q, type StarknetNetwork as r, type StellarNetwork as s, type StellarStrkey as t, attestationSeconds as u };
|