Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/automata-network/cctp-sdk
An SDK to integrate with Circle CCTP
https://github.com/automata-network/cctp-sdk
Last synced: 8 days ago
JSON representation
An SDK to integrate with Circle CCTP
- Host: GitHub
- URL: https://github.com/automata-network/cctp-sdk
- Owner: automata-network
- License: mit
- Created: 2023-12-01T10:32:52.000Z (12 months ago)
- Default Branch: main
- Last Pushed: 2023-12-08T10:39:00.000Z (11 months ago)
- Last Synced: 2024-04-01T16:09:09.335Z (8 months ago)
- Language: TypeScript
- Homepage: https://automata-network.github.io/cctp-sdk/
- Size: 17.2 MB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# cctp-sdk
An SDK to integrate with Circle CCTP
## Install
```
npm i @automata-network/cctp-sdk -S
```## Usage
```typescript
import { CCTPDomain, CCTPSdk } from "@automata-network/cctp-sdk";const testnetSdk = CCTPSdk().testnet();
const result = await testnetSdk.transferUSDC({
signer, // your signer
sourceDomain: CCTPDomain.Ethereum
destinationDomain: CCTPDomain.Avalanche,
destinationAddress: "0xAbD1626FCc4b288aF31695b007Ca1268D7E9Fe19",
amount: ethers.utils
.parseUnits("0.0001", 6)
.toString(),
onApprove: () => {
// show your loading toast
},
onBurnUSDC: () => {
// show your loading toast
},
onGetMessageBytes: () => {
// show your loading toast
},
onFetchAttestation: () => {
// show your loading toast
},
onMintUSDC: () => {
// show your loading toast
},
beforeMintUSDC: async () => {
// switch chain here before sending redemption
},
destinationSigner, // another signer for sending redemption, if you use same signer as the source chain, can skip this settings
});
```or you can do it step by step:
```typescript
// step1: approve
await testnetSdk.approveUSDC();// step2: burnUSDC
await testnetSdk.burnUSDC();// step3: getMessageBytes
await testnetSdk.getMessageBytes();// step4: waitForAttestation
await testnetSdk.waitForAttestation();// or you can fetch attestation without result check and retry
await testnetSdk.fetchAttestation();
// step5: mintUSDC
await testnetSdk.mintUSDC();
```see [here](./packages/sdk/src/sdk.ts#L219) for more details
---
if you need to add your configs:
```typescript
import {
CCTPDomain,
CCTPSdk,
defaultConfigs,
} from "@automata-network/cctp-sdk";const testnetSdk = CCTPSdk({
mainnet: {
irisApiHost: defaultConfigs.mainnet.irisApiHost,
networks: [
{
domain: CCTPDomain.Avalanche,
usdcContractAddress: "0x5425890298aed601595a70ab815c96711a31bc65",
cctpMessageTransmitterContractAddress:
"0xa9fb1b3009dcb79e2fe346c16a604b8fa8ae0a79",
cctpMessengerContractAddress:
"0xeb08f243e5d3fcff26a9e38ae5520a669f4019d0",
rpc: "https://rpc.ankr.com/avalanche_fuji",
},
],
},
testnet: {
irisApiHost: defaultConfigs.testnet.irisApiHost,
networks: [
{
domain: CCTPDomain.Avalanche,
usdcContractAddress: "0x5425890298aed601595a70ab815c96711a31bc65",
cctpMessageTransmitterContractAddress:
"0xa9fb1b3009dcb79e2fe346c16a604b8fa8ae0a79",
cctpMessengerContractAddress:
"0xeb08f243e5d3fcff26a9e38ae5520a669f4019d0",
rpc: "https://rpc.ankr.com/avalanche_fuji",
},
],
},
}).testnet();
```---
check if the transfer is completed
```typescript
const isTransferCompleted = await testnetSdk.isTransferCompleted({
messageBytes: result.messageBytes, // messageBytes is from testnetSdk.transferUSDC, or testnetSdk.getMessageBytes
});
```# LICENSE
MIT