UNPKG

@stable-io/cctp-sdk-definitions

Version:

Definitions for the CCTP SDK

29 lines 1.85 kB
// Copyright (c) 2025 Stable Technologies Inc // This Source Code Form is subject to the terms of the Mozilla Public // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at https://mozilla.org/MPL/2.0/. import { customizableBytes } from "binary-layout"; import { amountItem, universalAddressItem, rawDomainItem, domainItem } from "./layoutItems.js"; import { Usdc } from "./constants/index.js"; //see https://developers.circle.com/stablecoins/message-format const versionItem = (version, omit) => ({ binary: "uint", size: 4, custom: version, omit: (omit ?? true) }); const templateDomainItem = (rawDomains) => (rawDomains ? rawDomainItem : domainItem()); export const messageLayoutTemplate = (version, nonceItem, extraFields, messageBody, useRawDomains, omitVersion) => [ { name: "version", ...versionItem(version, omitVersion) }, { name: "sourceDomain", ...templateDomainItem(useRawDomains) }, { name: "destinationDomain", ...templateDomainItem(useRawDomains) }, { name: "nonce", ...nonceItem }, { name: "sender", ...universalAddressItem }, { name: "recipient", ...universalAddressItem }, { name: "destinationCaller", ...universalAddressItem }, ...extraFields, customizableBytes({ name: "messageBody" }, messageBody), ]; //deliberately no `satisfies` declaration because it messes up type inference export const burnMessageLayoutTemplate = (version, omitVersion) => [ { name: "messageBodyVersion", ...versionItem(version, omitVersion) }, { name: "burnToken", ...universalAddressItem }, { name: "mintRecipient", ...universalAddressItem }, { name: "amount", ...amountItem(32, Usdc) }, { name: "messageSender", ...universalAddressItem }, ]; //deliberately no `satisfies` declaration because it messes up type inference //# sourceMappingURL=messages.js.map