@stable-io/cctp-sdk-definitions
Version:
Definitions for the CCTP SDK
29 lines • 1.85 kB
JavaScript
// 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