Sign In

@ramp-kit/core

Package Overview
Dependencies
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@ramp-kit/core - npm Package Compare versions

Comparing version
0.1.5
to
0.1.6
+24
dist/idempotency.d.ts
/**
* Client-side idempotency for order creation: within one process a quote maps
* to at most one order, even under concurrent calls or a retry. Does NOT
* survive a restart — persist `stableId` on your backend for that. The same
* key is passed upstream too (Etherfuse `orderId`, Manteca `externalId`).
*/
import type { RampOrder } from "./types.js";
/**
* Deterministic UUID-shaped id from a seed (e.g. a quote id): same seed →
* same id, so a retried create reuses the upstream token. cyrb128 hash.
*/
export declare function stableId(seed: string): string;
/** Deduplicates order creation by a caller-chosen key within this process. */
export declare class OrderIdempotency {
private readonly inflight;
private readonly settled;
/**
* Run `create` at most once per `key`. Concurrent callers share the same
* in-flight promise; a completed key returns the first order it produced.
* A failed attempt is not cached, so a later retry runs again.
*/
run(key: string, create: () => Promise<RampOrder>): Promise<RampOrder>;
}
//# sourceMappingURL=idempotency.d.ts.map
{"version":3,"file":"idempotency.d.ts","sourceRoot":"","sources":["../src/idempotency.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAmB7C;AAED,8EAA8E;AAC9E,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyC;IAClE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgC;IAExD;;;;OAIG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;CAkBvE"}
/**
* Deterministic UUID-shaped id from a seed (e.g. a quote id): same seed →
* same id, so a retried create reuses the upstream token. cyrb128 hash.
*/
export function stableId(seed) {
let h1 = 1779033703 ^ seed.length;
let h2 = 3144134277 ^ seed.length;
let h3 = 1013904242 ^ seed.length;
let h4 = 2773480762 ^ seed.length;
for (let i = 0; i < seed.length; i++) {
const k = seed.charCodeAt(i);
h1 = h2 ^ Math.imul(h1 ^ k, 597399067);
h2 = h3 ^ Math.imul(h2 ^ k, 2869860233);
h3 = h4 ^ Math.imul(h3 ^ k, 951274213);
h4 = h1 ^ Math.imul(h4 ^ k, 2716044179);
}
h1 = Math.imul(h3 ^ (h1 >>> 18), 597399067);
h2 = Math.imul(h4 ^ (h2 >>> 22), 2869860233);
h3 = Math.imul(h1 ^ (h3 >>> 17), 951274213);
h4 = Math.imul(h2 ^ (h4 >>> 19), 2716044179);
const hex = (n) => (n >>> 0).toString(16).padStart(8, "0");
const h = hex(h1) + hex(h2) + hex(h3) + hex(h4);
return `${h.slice(0, 8)}-${h.slice(8, 12)}-${h.slice(12, 16)}-${h.slice(16, 20)}-${h.slice(20, 32)}`;
}
/** Deduplicates order creation by a caller-chosen key within this process. */
export class OrderIdempotency {
inflight = new Map();
settled = new Map();
/**
* Run `create` at most once per `key`. Concurrent callers share the same
* in-flight promise; a completed key returns the first order it produced.
* A failed attempt is not cached, so a later retry runs again.
*/
run(key, create) {
const done = this.settled.get(key);
if (done)
return Promise.resolve(done);
const pending = this.inflight.get(key);
if (pending)
return pending;
const promise = create()
.then((order) => {
this.settled.set(key, order);
this.inflight.delete(key);
return order;
})
.catch((err) => {
this.inflight.delete(key);
throw err;
});
this.inflight.set(key, promise);
return promise;
}
}
//# sourceMappingURL=idempotency.js.map
{"version":3,"file":"idempotency.js","sourceRoot":"","sources":["../src/idempotency.ts"],"names":[],"mappings":"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"}
/** Rounding strategy for the last kept digit. */
export type Rounding = "down" | "up" | "half_up";
/** Fractional digits for Stellar / most crypto assets. */
export declare const ASSET_DECIMALS = 7;
/** Fractional digits for fiat amounts shown to users. */
export declare const FIAT_DECIMALS = 2;
/**
* A signed decimal as `coef / 10^scale`, with `coef` a BigInt and
* `scale >= 0`. Exact under +, -, * and truncated/rounded division.
*/
export declare class Decimal {
readonly coef: bigint;
readonly scale: number;
private constructor();
static parse(value: string | number | Decimal, field?: string): Decimal;
private static scaled;
private alignedCoef;
isZero(): boolean;
isNegative(): boolean;
isPositive(): boolean;
multiply(other: Decimal): Decimal;
add(other: Decimal): Decimal;
subtract(other: Decimal): Decimal;
compare(other: Decimal): -1 | 0 | 1;
/**
* Divide to exactly `decimals` fractional digits, rounding the last one.
* Throws on divide-by-zero rather than yielding Infinity.
*/
divide(other: Decimal, decimals: number, rounding?: Rounding): Decimal;
/** Re-scale to `decimals` fractional digits, rounding when narrowing. */
round(decimals: number, rounding?: Rounding): Decimal;
/** Canonical decimal string, no exponent, `decimals` fractional digits. */
toString(): string;
}
/** Parse and assert a strictly positive amount, or throw `invalid_amount`. */
export declare function assertPositiveAmount(value: string, field?: string): Decimal;
/** `a * b`, rounded to `decimals` (down by default: never over-promise). */
export declare function multiplyAmount(a: string, b: string, decimals: number, rounding?: Rounding): string;
/** `a / b`, rounded to `decimals` (down by default). */
export declare function divideAmount(a: string, b: string, decimals: number, rounding?: Rounding): string;
/** `a - b`, exact. */
export declare function subtractAmounts(a: string, b: string): string;
/** Round a decimal string to `decimals` fractional digits. */
export declare function roundAmount(value: string, decimals: number, rounding?: Rounding): string;
/** Compare two decimal strings: -1 / 0 / 1. Safe for Array.sort. */
export declare function compareAmounts(a: string, b: string): -1 | 0 | 1;
//# sourceMappingURL=money.d.ts.map
{"version":3,"file":"money.d.ts","sourceRoot":"","sources":["../src/money.ts"],"names":[],"mappings":"AAOA,iDAAiD;AACjD,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;AAEjD,0DAA0D;AAC1D,eAAO,MAAM,cAAc,IAAI,CAAC;AAChC,yDAAyD;AACzD,eAAO,MAAM,aAAa,IAAI,CAAC;AAE/B;;;GAGG;AACH,qBAAa,OAAO;IAEhB,QAAQ,CAAC,IAAI,EAAE,MAAM;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM;IAFxB,OAAO;IAKP,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,EAAE,KAAK,SAAW,GAAG,OAAO;IAoBzE,OAAO,CAAC,MAAM,CAAC,MAAM;IAIrB,OAAO,CAAC,WAAW;IAInB,MAAM,IAAI,OAAO;IAIjB,UAAU,IAAI,OAAO;IAIrB,UAAU,IAAI,OAAO;IAIrB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAIjC,GAAG,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAK5B,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAKjC,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IAOnC;;;OAGG;IACH,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAE,QAAiB,GAAG,OAAO;IAW9E,yEAAyE;IACzE,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAE,QAAiB,GAAG,OAAO;IAQ7D,2EAA2E;IAC3E,QAAQ,IAAI,MAAM;CAQnB;AAoBD,8EAA8E;AAC9E,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAW,GAAG,OAAO,CAM7E;AAED,4EAA4E;AAC5E,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAE,QAAiB,GAAG,MAAM,CAE1G;AAED,wDAAwD;AACxD,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAE,QAAiB,GAAG,MAAM,CAExG;AAED,sBAAsB;AACtB,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,8DAA8D;AAC9D,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAE,QAAiB,GAAG,MAAM,CAEhG;AAED,oEAAoE;AACpE,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAE/D"}
/**
* Exact decimal arithmetic for money on BigInt fixed-point (no deps).
* Amounts are decimal strings, never JS numbers (`0.1 + 0.2 !== 0.3`, and
* Stellar's 7 decimals make float error real money lost).
*/
import { RampError } from "./types.js";
/** Fractional digits for Stellar / most crypto assets. */
export const ASSET_DECIMALS = 7;
/** Fractional digits for fiat amounts shown to users. */
export const FIAT_DECIMALS = 2;
/**
* A signed decimal as `coef / 10^scale`, with `coef` a BigInt and
* `scale >= 0`. Exact under +, -, * and truncated/rounded division.
*/
export class Decimal {
coef;
scale;
constructor(coef, scale) {
this.coef = coef;
this.scale = scale;
}
static parse(value, field = "amount") {
if (value instanceof Decimal)
return value;
const s = typeof value === "number" ? String(value) : value?.trim();
// Plain decimal only: no exponent, no thousands separators, no NaN.
if (!s || !/^[+-]?\d+(\.\d+)?$/.test(s)) {
throw new RampError(`Invalid ${field} "${value}" — expected a plain decimal string`, "core", "invalid_amount");
}
const negative = s.startsWith("-");
const unsigned = s.replace(/^[+-]/, "");
const [intPart, fracPart = ""] = unsigned.split(".");
const scale = fracPart.length;
const digits = `${intPart}${fracPart}`.replace(/^0+(?=\d)/, "");
const coef = BigInt(digits === "" ? "0" : digits);
return new Decimal(negative && coef !== 0n ? -coef : coef, scale);
}
static scaled(coef, scale) {
return new Decimal(coef, scale);
}
alignedCoef(toScale) {
return this.coef * 10n ** BigInt(toScale - this.scale);
}
isZero() {
return this.coef === 0n;
}
isNegative() {
return this.coef < 0n;
}
isPositive() {
return this.coef > 0n;
}
multiply(other) {
return Decimal.scaled(this.coef * other.coef, this.scale + other.scale);
}
add(other) {
const scale = Math.max(this.scale, other.scale);
return Decimal.scaled(this.alignedCoef(scale) + other.alignedCoef(scale), scale);
}
subtract(other) {
const scale = Math.max(this.scale, other.scale);
return Decimal.scaled(this.alignedCoef(scale) - other.alignedCoef(scale), scale);
}
compare(other) {
const scale = Math.max(this.scale, other.scale);
const a = this.alignedCoef(scale);
const b = other.alignedCoef(scale);
return a < b ? -1 : a > b ? 1 : 0;
}
/**
* Divide to exactly `decimals` fractional digits, rounding the last one.
* Throws on divide-by-zero rather than yielding Infinity.
*/
divide(other, decimals, rounding = "down") {
if (other.isZero()) {
throw new RampError("Division by zero in amount math", "core", "invalid_amount");
}
// value = (this.coef / 10^this.scale) / (other.coef / 10^other.scale)
// Want `decimals` fractional digits → scale numerator by 10^decimals.
const num = this.coef * 10n ** BigInt(other.scale + decimals);
const den = other.coef * 10n ** BigInt(this.scale);
return Decimal.scaled(divideRound(num, den, rounding), decimals);
}
/** Re-scale to `decimals` fractional digits, rounding when narrowing. */
round(decimals, rounding = "down") {
if (decimals >= this.scale) {
return Decimal.scaled(this.alignedCoef(decimals), decimals);
}
const factor = 10n ** BigInt(this.scale - decimals);
return Decimal.scaled(divideRound(this.coef, factor, rounding), decimals);
}
/** Canonical decimal string, no exponent, `decimals` fractional digits. */
toString() {
const negative = this.coef < 0n;
const digits = (negative ? -this.coef : this.coef).toString();
if (this.scale === 0)
return `${negative ? "-" : ""}${digits}`;
const padded = digits.padStart(this.scale + 1, "0");
const cut = padded.length - this.scale;
return `${negative ? "-" : ""}${padded.slice(0, cut)}.${padded.slice(cut)}`;
}
}
/** Round a BigInt quotient `num/den` (den > 0 not required) per strategy. */
function divideRound(num, den, rounding) {
const negative = num < 0n !== den < 0n;
const a = num < 0n ? -num : num;
const b = den < 0n ? -den : den;
let q = a / b;
const r = a % b;
if (r !== 0n) {
if (rounding === "up") {
q += 1n;
}
else if (rounding === "half_up") {
if (r * 2n >= b)
q += 1n;
}
// "down" truncates toward zero — nothing to add.
}
return negative ? -q : q;
}
/** Parse and assert a strictly positive amount, or throw `invalid_amount`. */
export function assertPositiveAmount(value, field = "amount") {
const d = Decimal.parse(value, field);
if (!d.isPositive()) {
throw new RampError(`${field} must be greater than zero (got "${value}")`, "core", "invalid_amount");
}
return d;
}
/** `a * b`, rounded to `decimals` (down by default: never over-promise). */
export function multiplyAmount(a, b, decimals, rounding = "down") {
return Decimal.parse(a).multiply(Decimal.parse(b)).round(decimals, rounding).toString();
}
/** `a / b`, rounded to `decimals` (down by default). */
export function divideAmount(a, b, decimals, rounding = "down") {
return Decimal.parse(a).divide(Decimal.parse(b), decimals, rounding).toString();
}
/** `a - b`, exact. */
export function subtractAmounts(a, b) {
return Decimal.parse(a).subtract(Decimal.parse(b)).toString();
}
/** Round a decimal string to `decimals` fractional digits. */
export function roundAmount(value, decimals, rounding = "down") {
return Decimal.parse(value).round(decimals, rounding).toString();
}
/** Compare two decimal strings: -1 / 0 / 1. Safe for Array.sort. */
export function compareAmounts(a, b) {
return Decimal.parse(a).compare(Decimal.parse(b));
}
//# sourceMappingURL=money.js.map
{"version":3,"file":"money.js","sourceRoot":"","sources":["../src/money.ts"],"names":[],"mappings":"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"}
/** JSON request to an absolute anchor URL, with normalized errors. */
export declare function sepRequest<T>(fetchImpl: typeof globalThis.fetch, method: "GET" | "POST", url: string, options?: {
token?: string;
body?: unknown;
}): Promise<T>;
export interface Sep10Config {
webAuthEndpoint: string;
signingKey: string;
homeDomain: string;
webAuthDomain: string;
account: string;
networkPassphrase: string;
sign: (xdr: string, networkPassphrase: string) => Promise<string>;
fetchImpl: typeof globalThis.fetch;
}
/**
* SEP-10 Web Authentication. Fetches a challenge, verifies it really came
* from the anchor's signing key (so the wallet never signs a malicious tx),
* has the user sign it, and exchanges it for a JWT. Tokens are cached until
* shortly before they expire.
*/
export declare class Sep10Authenticator {
private readonly cfg;
private cached?;
constructor(cfg: Sep10Config);
token(): Promise<string>;
/** Drop the cached token (e.g. after a 401 from a resource server). */
invalidate(): void;
}
//# sourceMappingURL=auth.d.ts.map
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/providers/sep/auth.ts"],"names":[],"mappings":"AAIA,sEAAsE;AACtE,wBAAsB,UAAU,CAAC,CAAC,EAChC,SAAS,EAAE,OAAO,UAAU,CAAC,KAAK,EAClC,MAAM,EAAE,KAAK,GAAG,MAAM,EACtB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAO,GAC/C,OAAO,CAAC,CAAC,CAAC,CAyBZ;AAUD,MAAM,WAAW,WAAW;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAClE,SAAS,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACpC;AAED;;;;;GAKG;AACH,qBAAa,kBAAkB;IAGjB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAFhC,OAAO,CAAC,MAAM,CAAC,CAAuC;gBAEzB,GAAG,EAAE,WAAW;IAEvC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IAiE9B,uEAAuE;IACvE,UAAU,IAAI,IAAI;CAGnB"}
import { WebAuth } from "@stellar/stellar-sdk";
import { RampError } from "../../types.js";
/** JSON request to an absolute anchor URL, with normalized errors. */
export async function sepRequest(fetchImpl, method, url, options = {}) {
const headers = { "Content-Type": "application/json" };
if (options.token)
headers.Authorization = `Bearer ${options.token}`;
let res;
try {
res = await fetchImpl(url, {
method,
headers,
body: options.body === undefined ? undefined : JSON.stringify(options.body),
});
}
catch (err) {
throw new RampError(`Network error calling ${method} ${url}`, "sep", "network", err);
}
const text = await res.text();
const json = text ? safeParse(text) : undefined;
if (!res.ok) {
const code = res.status === 401 || res.status === 403 ? "auth" : "provider_error";
throw new RampError(`${method} ${url} failed (${res.status})`, "sep", code, json ?? text);
}
return json;
}
function safeParse(text) {
try {
return JSON.parse(text);
}
catch {
return text;
}
}
/**
* SEP-10 Web Authentication. Fetches a challenge, verifies it really came
* from the anchor's signing key (so the wallet never signs a malicious tx),
* has the user sign it, and exchanges it for a JWT. Tokens are cached until
* shortly before they expire.
*/
export class Sep10Authenticator {
cfg;
cached;
constructor(cfg) {
this.cfg = cfg;
}
async token() {
if (this.cached && this.cached.expiresAt > Date.now() + 10_000) {
return this.cached.token;
}
const url = `${this.cfg.webAuthEndpoint}?account=${encodeURIComponent(this.cfg.account)}&home_domain=${encodeURIComponent(this.cfg.homeDomain)}`;
const challenge = await sepRequest(this.cfg.fetchImpl, "GET", url);
// Pin verification AND signing to the configured network — the anchor's
// response must not be able to steer the wallet onto another network.
const passphrase = this.cfg.networkPassphrase;
if (challenge.network_passphrase &&
challenge.network_passphrase !== passphrase) {
throw new RampError(`SEP-10 challenge targets a different network ("${challenge.network_passphrase}") — refusing to sign`, "sep", "auth");
}
// Verify the challenge before signing: source = anchor signing key,
// correct home/web-auth domain, well-formed, and issued for OUR account
// (an anchor must not authenticate us as someone else). Throws otherwise.
try {
const { clientAccountID } = WebAuth.readChallengeTx(challenge.transaction, this.cfg.signingKey, passphrase, this.cfg.homeDomain, this.cfg.webAuthDomain);
if (clientAccountID !== this.cfg.account) {
throw new RampError("SEP-10 challenge was issued for a different account — refusing to sign", "sep", "auth");
}
}
catch (err) {
if (err instanceof RampError)
throw err;
throw new RampError("SEP-10 challenge failed verification — refusing to sign", "sep", "auth", err);
}
const signed = await this.cfg.sign(challenge.transaction, passphrase);
const { token } = await sepRequest(this.cfg.fetchImpl, "POST", this.cfg.webAuthEndpoint, { body: { transaction: signed } });
this.cached = { token, expiresAt: jwtExpiry(token) };
return token;
}
/** Drop the cached token (e.g. after a 401 from a resource server). */
invalidate() {
this.cached = undefined;
}
}
/** Read a JWT `exp` (ms). Falls back to 10 minutes when absent/unparseable. */
function jwtExpiry(token) {
const fallback = Date.now() + 10 * 60_000;
const payload = token.split(".")[1];
if (!payload)
return fallback;
try {
const json = JSON.parse(base64UrlDecode(payload));
return typeof json.exp === "number" ? json.exp * 1000 : fallback;
}
catch {
return fallback;
}
}
function base64UrlDecode(input) {
const b64 = input.replace(/-/g, "+").replace(/_/g, "/").padEnd(Math.ceil(input.length / 4) * 4, "=");
if (typeof atob === "function")
return atob(b64);
return Buffer.from(b64, "base64").toString("utf8");
}
//# sourceMappingURL=auth.js.map
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/providers/sep/auth.ts"],"names":[],"mappings":"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"}
import type { Environment, ProviderCapabilities, RampProvider } from "../../provider.js";
import type { Network, QuoteRequest, RampAsset, RampOrder, RampQuote } from "../../types.js";
import type { SepProviderConfig } from "./types.js";
/**
* Generic adapter for any SEP-compliant Stellar anchor: the END USER
* authenticates with their own wallet (SEP-10), so one adapter fronts every
* anchor. Flow: SEP-1 discovery → SEP-10 → SEP-38 quote → SEP-24 transfer.
* createOrder returns an `interactiveUrl` for the user to finish KYC+funding.
*/
export declare class SepProvider implements RampProvider {
readonly name: string;
readonly capabilities: ProviderCapabilities;
readonly environment: Environment;
private readonly config;
private readonly fetchImpl;
private readonly networkPassphrase;
private readonly idem;
private endpoints?;
private auth?;
private currencyIssuers?;
constructor(config: SepProviderConfig);
listAssets(network?: Network): Promise<RampAsset[]>;
getQuote(request: QuoteRequest): Promise<RampQuote>;
createOrder(quote: RampQuote): Promise<RampOrder>;
private startInteractive;
getOrder(orderId: string): Promise<RampOrder>;
cancelOrder(orderId: string): Promise<RampOrder>;
private normalizeTransaction;
private token;
/** Resolve endpoints from stellar.toml once, or use the supplied ones. */
private resolveEndpoints;
private resolveIssuers;
private cacheIssuers;
}
//# sourceMappingURL=index.d.ts.map
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/sep/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,WAAW,EACX,oBAAoB,EACpB,YAAY,EACb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EACV,OAAO,EAEP,YAAY,EACZ,SAAS,EACT,SAAS,EACT,SAAS,EACV,MAAM,gBAAgB,CAAC;AAGxB,OAAO,KAAK,EAMV,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAuBpB;;;;;GAKG;AACH,qBAAa,WAAY,YAAW,YAAY;IAC9C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,oBAAoB,CAAC;IAC5C,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAElC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAC3C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0B;IACpD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA0B;IAE/C,OAAO,CAAC,SAAS,CAAC,CAAe;IACjC,OAAO,CAAC,IAAI,CAAC,CAAqB;IAClC,OAAO,CAAC,eAAe,CAAC,CAAsB;gBAElC,MAAM,EAAE,iBAAiB;IAsB/B,UAAU,CAAC,OAAO,GAAE,OAAmB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAkC9D,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC;IAuCnD,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;YAWzC,gBAAgB;IAgDxB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAY7C,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAUtD,OAAO,CAAC,oBAAoB;IAqB5B,OAAO,CAAC,KAAK;IAkBb,0EAA0E;YAC5D,gBAAgB;YA0BhB,cAAc;IAiB5B,OAAO,CAAC,YAAY;CASrB"}
import { Networks, StellarToml } from "@stellar/stellar-sdk";
import { OrderIdempotency, stableId } from "../../idempotency.js";
import { RampError } from "../../types.js";
import { Sep10Authenticator, sepRequest } from "./auth.js";
/** SEP-24 transaction status → normalized order status. */
const STATUS_MAP = {
incomplete: "awaiting_deposit",
pending_user_transfer_start: "awaiting_deposit",
pending_user_transfer_complete: "processing",
pending_anchor: "processing",
pending_stellar: "processing",
pending_external: "processing",
pending_trust: "processing",
pending_receiver: "processing",
pending_sender: "processing",
on_hold: "processing",
completed: "settled",
refunded: "failed",
expired: "cancelled",
error: "failed",
no_market: "failed",
too_small: "failed",
too_large: "failed",
};
/**
* Generic adapter for any SEP-compliant Stellar anchor: the END USER
* authenticates with their own wallet (SEP-10), so one adapter fronts every
* anchor. Flow: SEP-1 discovery → SEP-10 → SEP-38 quote → SEP-24 transfer.
* createOrder returns an `interactiveUrl` for the user to finish KYC+funding.
*/
export class SepProvider {
name;
capabilities;
environment;
config;
fetchImpl;
networkPassphrase;
idem = new OrderIdempotency();
endpoints;
auth;
currencyIssuers;
constructor(config) {
this.config = config;
this.name = config.name ?? config.homeDomain;
this.environment = config.environment ?? "sandbox";
this.fetchImpl = config.fetch ?? globalThis.fetch;
this.networkPassphrase =
config.networkPassphrase ??
(config.environment === "production" ? Networks.PUBLIC : Networks.TESTNET);
this.capabilities = {
countries: config.capabilities?.countries ?? [],
fiatCurrencies: config.capabilities?.fiatCurrencies ?? [],
networks: config.capabilities?.networks ?? ["stellar"],
stellarNative: config.capabilities?.stellarNative ?? true,
onramp: config.capabilities?.onramp,
offramp: config.capabilities?.offramp,
};
this.endpoints = config.endpoints
? validateEndpoints(config.endpoints, this.name)
: undefined;
if (config.currencies)
this.cacheIssuers(config.currencies);
}
async listAssets(network = "stellar") {
if (network !== "stellar")
return [];
const { transferServerSep24 } = await this.resolveEndpoints();
const info = await sepRequest(this.fetchImpl, "GET", `${transferServerSep24}/info`);
const issuers = await this.resolveIssuers();
// Direction sets built from ENABLED entries only — a disabled deposit
// must not advertise an onramp the anchor will refuse.
const enabledCodes = (m) => new Set(Object.entries(m ?? {})
.filter(([, v]) => v.enabled !== false)
.map(([code]) => code));
const depositCodes = enabledCodes(info.deposit);
const withdrawCodes = enabledCodes(info.withdraw);
const codes = new Set([...depositCodes, ...withdrawCodes]);
return [...codes].map((code) => {
const issuer = issuers.get(code);
const directions = [];
if (depositCodes.has(code))
directions.push("onramp");
if (withdrawCodes.has(code))
directions.push("offramp");
return {
identifier: issuer ? `${code}:${issuer}` : code,
symbol: code,
network: "stellar",
directions,
};
});
}
async getQuote(request) {
const { anchorQuoteServer } = await this.resolveEndpoints();
if (!anchorQuoteServer) {
throw new RampError(`Anchor ${this.name} does not offer SEP-38 firm quotes (no ANCHOR_QUOTE_SERVER)`, this.name, "unsupported");
}
const token = await this.token();
const stellarAsset = `stellar:${request.assetIdentifier}`;
const fiatAsset = `iso4217:${request.fiatCurrency}`;
const isOnramp = request.direction === "onramp";
const quote = await sepRequest(this.fetchImpl, "POST", `${anchorQuoteServer}/quote`, {
token,
body: {
sell_asset: isOnramp ? fiatAsset : stellarAsset,
buy_asset: isOnramp ? stellarAsset : fiatAsset,
sell_amount: request.sourceAmount,
context: "sep24",
},
});
return {
id: quote.id,
provider: this.name,
request,
targetAmount: quote.buy_amount,
rate: quote.price,
fees: quote.fee?.total,
expiresAt: new Date(quote.expires_at),
raw: quote,
};
}
async createOrder(quote) {
if (quote.expiresAt.getTime() < Date.now()) {
throw new RampError("Quote expired", this.name, "quote_expired");
}
// Dedupes concurrent creates. SEP-24 has no idempotency key, so a retry
// after an ambiguous failure may open a second incomplete tx — benign,
// funds move only through the one hosted flow the user completes.
const key = stableId(`${this.name}:${quote.id}`);
return this.idem.run(key, () => this.startInteractive(quote));
}
async startInteractive(quote) {
const { transferServerSep24 } = await this.resolveEndpoints();
const req = quote.request;
// The SEP-10 JWT authenticates config.account; the transfer must settle
// on that same account. A mismatched walletAddress would create an
// authenticated flow for a different Stellar account — reject it.
if (req.walletAddress && req.walletAddress !== this.config.account) {
throw new RampError(`walletAddress (${req.walletAddress}) must match the SEP-10 authenticated account (${this.config.account})`, this.name, "auth");
}
const isOnramp = req.direction === "onramp";
const [assetCode, assetIssuer] = req.assetIdentifier.split(":");
const token = await this.token();
const path = isOnramp
? "/transactions/deposit/interactive"
: "/transactions/withdraw/interactive";
const res = await sepRequest(this.fetchImpl, "POST", `${transferServerSep24}${path}`, {
token,
body: {
asset_code: assetCode,
...(assetIssuer ? { asset_issuer: assetIssuer } : {}),
account: this.config.account,
amount: req.sourceAmount,
quote_id: quote.id,
},
});
const now = new Date();
return {
id: res.id,
provider: this.name,
direction: req.direction,
status: "awaiting_deposit",
quote,
interactiveUrl: res.url,
createdAt: now,
updatedAt: now,
raw: res,
};
}
async getOrder(orderId) {
const { transferServerSep24 } = await this.resolveEndpoints();
const token = await this.token();
const { transaction } = await sepRequest(this.fetchImpl, "GET", `${transferServerSep24}/transaction?id=${encodeURIComponent(orderId)}`, { token });
return this.normalizeTransaction(transaction);
}
async cancelOrder(orderId) {
// SEP-24 has no cancel endpoint; the anchor cancels via the interactive
// flow or on expiry. Surface the current state instead of faking a cancel.
throw new RampError(`SEP-24 anchors do not support programmatic cancel (order ${orderId})`, this.name, "unsupported");
}
normalizeTransaction(tx) {
const status = STATUS_MAP[tx.status] ?? "processing";
const failed = status === "failed" || status === "cancelled";
return {
id: tx.id,
provider: this.name,
direction: tx.kind === "withdrawal" ? "offramp" : "onramp",
status,
interactiveUrl: tx.more_info_url ?? undefined,
txHash: tx.stellar_transaction_id ?? undefined,
failureReason: failed ? (tx.message ?? tx.status) : undefined,
createdAt: tx.started_at ? new Date(tx.started_at) : new Date(),
updatedAt: tx.updated_at
? new Date(tx.updated_at)
: tx.completed_at
? new Date(tx.completed_at)
: new Date(),
raw: tx,
};
}
token() {
if (!this.auth) {
const ep = this.endpoints;
if (!ep)
throw new RampError("Endpoints not resolved", this.name, "provider_error");
this.auth = new Sep10Authenticator({
webAuthEndpoint: ep.webAuthEndpoint,
signingKey: ep.signingKey,
homeDomain: this.config.homeDomain,
webAuthDomain: ep.webAuthDomain ?? hostOf(ep.webAuthEndpoint),
account: this.config.account,
networkPassphrase: this.networkPassphrase,
sign: this.config.sign,
fetchImpl: this.fetchImpl,
});
}
return this.auth.token();
}
/** Resolve endpoints from stellar.toml once, or use the supplied ones. */
async resolveEndpoints() {
if (this.endpoints)
return this.endpoints;
const toml = await StellarToml.Resolver.resolve(this.config.homeDomain);
const webAuthEndpoint = toml.WEB_AUTH_ENDPOINT;
const transferServerSep24 = toml.TRANSFER_SERVER_SEP0024;
const signingKey = toml.SIGNING_KEY;
if (!webAuthEndpoint || !transferServerSep24 || !signingKey) {
throw new RampError(`${this.config.homeDomain} stellar.toml is missing SEP-10/SEP-24 endpoints`, this.name, "unsupported");
}
this.endpoints = validateEndpoints({
webAuthEndpoint,
transferServerSep24,
anchorQuoteServer: toml.ANCHOR_QUOTE_SERVER,
signingKey,
}, this.name);
this.cacheIssuers(toml.CURRENCIES);
return this.endpoints;
}
async resolveIssuers() {
if (this.currencyIssuers)
return this.currencyIssuers;
// Endpoints supplied directly (no toml in play): don't hit the network
// just for issuers — callers can pass `currencies` to enrich identifiers.
if (this.config.endpoints) {
this.currencyIssuers = new Map();
return this.currencyIssuers;
}
try {
const toml = await StellarToml.Resolver.resolve(this.config.homeDomain);
this.cacheIssuers(toml.CURRENCIES);
}
catch {
this.currencyIssuers = new Map();
}
return this.currencyIssuers ?? new Map();
}
cacheIssuers(currencies) {
const map = new Map();
for (const c of currencies ?? []) {
if (c.code && c.issuer)
map.set(c.code, c.issuer);
}
this.currencyIssuers = map;
}
}
function hostOf(url) {
try {
return new URL(url).host;
}
catch {
return url;
}
}
/**
* SEP-10 bearer tokens travel to these endpoints — never over plaintext.
* HTTPS required; http allowed only for localhost (local anchor dev).
*/
function assertSecureUrl(url, what, provider) {
let parsed;
try {
parsed = new URL(url);
}
catch {
throw new RampError(`${what} is not a valid URL: "${url}"`, provider, "unsupported");
}
const isLocal = parsed.hostname === "localhost" || parsed.hostname === "127.0.0.1";
if (parsed.protocol !== "https:" && !(parsed.protocol === "http:" && isLocal)) {
throw new RampError(`${what} must use HTTPS (got "${url}") — refusing to send auth tokens over an insecure channel`, provider, "unsupported");
}
}
function validateEndpoints(ep, provider) {
assertSecureUrl(ep.webAuthEndpoint, "WEB_AUTH_ENDPOINT", provider);
assertSecureUrl(ep.transferServerSep24, "TRANSFER_SERVER_SEP0024", provider);
if (ep.anchorQuoteServer) {
assertSecureUrl(ep.anchorQuoteServer, "ANCHOR_QUOTE_SERVER", provider);
}
return ep;
}
//# sourceMappingURL=index.js.map
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/sep/index.ts"],"names":[],"mappings":"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"}
/**
* Types for the SEP anchor adapter: SEP-1 (stellar.toml discovery),
* SEP-10 (web auth), SEP-38 (quotes) and SEP-24 (interactive transfer).
* Only the subset the kit consumes, per the Stellar Ecosystem Proposals.
*/
import type { ProviderCapabilities } from "../../provider.js";
/** Resolved anchor endpoints (from stellar.toml or supplied directly). */
export interface SepEndpoints {
/** SEP-10 WEB_AUTH_ENDPOINT. */
webAuthEndpoint: string;
/** SEP-24 TRANSFER_SERVER_SEP0024. */
transferServerSep24: string;
/** SEP-38 ANCHOR_QUOTE_SERVER, when the anchor offers firm quotes. */
anchorQuoteServer?: string;
/** SEP-10 SIGNING_KEY (server account that signs challenges). */
signingKey: string;
/** Domain the SEP-10 challenge must target. Defaults to the auth host. */
webAuthDomain?: string;
}
export interface SepProviderConfig {
/** Anchor home domain hosting stellar.toml (e.g. "anchor.example.com"). */
homeDomain: string;
/**
* End-user Stellar account (G...). Authenticates via SEP-10 and is the
* deposit destination / withdrawal source.
*/
account: string;
/**
* Wallet signer: receives XDR + network passphrase, returns signed XDR.
* Used to sign the SEP-10 challenge (Freighter/hardware wallets fit here).
*/
sign: (xdr: string, networkPassphrase: string) => Promise<string>;
/** sandbox → Testnet, production → Public. Default "sandbox". */
environment?: "sandbox" | "production";
/** Pre-resolved endpoints; skips the stellar.toml fetch when provided. */
endpoints?: SepEndpoints;
/**
* Asset code → issuer, to build "CODE:ISSUER" identifiers in listAssets
* without a stellar.toml fetch. Only used alongside `endpoints`.
*/
currencies?: Array<{
code: string;
issuer: string;
}>;
/** Currencies/countries this anchor serves, for router eligibility. */
capabilities?: Partial<ProviderCapabilities>;
/** Display name; defaults to the home domain. */
name?: string;
/** Network passphrase override; defaults per environment. */
networkPassphrase?: string;
fetch?: typeof globalThis.fetch;
}
/** SEP-10 challenge response. */
export interface Sep10Challenge {
transaction: string;
network_passphrase?: string;
}
/** SEP-10 token response. */
export interface Sep10Token {
token: string;
}
/** SEP-38 firm quote (POST /quote). */
export interface Sep38Quote {
id: string;
expires_at: string;
total_price: string;
price: string;
sell_asset: string;
buy_asset: string;
sell_amount: string;
buy_amount: string;
fee?: {
total: string;
asset: string;
};
}
/** SEP-24 interactive response. */
export interface Sep24Interactive {
type: string;
url: string;
id: string;
}
/** SEP-24 transaction record (subset). */
export interface Sep24Transaction {
id: string;
kind: "deposit" | "withdrawal";
status: string;
amount_in?: string | null;
amount_out?: string | null;
amount_fee?: string | null;
more_info_url?: string | null;
stellar_transaction_id?: string | null;
message?: string | null;
started_at?: string | null;
updated_at?: string | null;
completed_at?: string | null;
}
/** SEP-24 /info response (subset). */
export interface Sep24Info {
deposit?: Record<string, {
enabled?: boolean;
}>;
withdraw?: Record<string, {
enabled?: boolean;
}>;
}
//# sourceMappingURL=types.d.ts.map
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/providers/sep/types.ts"],"names":[],"mappings":"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"}
export {};
//# sourceMappingURL=types.js.map
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/providers/sep/types.ts"],"names":[],"mappings":""}
+5
-0

@@ -5,2 +5,4 @@ export * from "./types.js";

export * from "./http.js";
export * from "./money.js";
export * from "./idempotency.js";
export * from "./stellar.js";

@@ -11,3 +13,6 @@ export * from "./providers/etherfuse/index.js";

export * from "./providers/manteca/types.js";
export * from "./providers/sep/index.js";
export * from "./providers/sep/types.js";
export * from "./providers/sep/auth.js";
export * from "./providers/mock.js";
//# sourceMappingURL=index.d.ts.map
+1
-1

@@ -1,1 +0,1 @@

{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qBAAqB,CAAC"}
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC"}

@@ -5,2 +5,4 @@ export * from "./types.js";

export * from "./http.js";
export * from "./money.js";
export * from "./idempotency.js";
export * from "./stellar.js";

@@ -11,3 +13,6 @@ export * from "./providers/etherfuse/index.js";

export * from "./providers/manteca/types.js";
export * from "./providers/sep/index.js";
export * from "./providers/sep/types.js";
export * from "./providers/sep/auth.js";
export * from "./providers/mock.js";
//# sourceMappingURL=index.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qBAAqB,CAAC"}
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC"}

@@ -34,2 +34,7 @@ import type { CountryCode, DepositInstructions, FiatCurrency, Network, QuoteRequest, RampAsset, RampOrder, RampQuote } from "./types.js";

/**
* Environment this adapter targets — "sandbox" (Testnet) or "production"
* (mainnet). Lets UIs detect a testnet/mainnet mismatch before moving funds.
*/
readonly environment?: Environment;
/**
* Discover tradable assets. Never cache across environments.

@@ -36,0 +41,0 @@ * `options` are provider-specific hints (e.g. Etherfuse requires a

@@ -1,1 +0,1 @@

{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,mBAAmB,EACnB,YAAY,EACZ,OAAO,EACP,YAAY,EACZ,SAAS,EACT,SAAS,EACT,SAAS,EACV,MAAM,YAAY,CAAC;AAEpB,uEAAuE;AACvE,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,cAAc,EAAE,YAAY,EAAE,CAAC;CAChC;AAED,mEAAmE;AACnE,MAAM,WAAW,oBAAoB;IACnC,wEAAwE;IACxE,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,kDAAkD;IAClD,cAAc,EAAE,YAAY,EAAE,CAAC;IAC/B,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,0DAA0D;IAC1D,aAAa,EAAE,OAAO,CAAC;IACvB;;;;OAIG;IACH,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B;AAED;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,oBAAoB,CAAC;IAE5C;;;;OAIG;IACH,UAAU,CACR,OAAO,CAAC,EAAE,OAAO,EACjB,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAC/C,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAExB,mEAAmE;IACnE,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAEpD,mEAAmE;IACnE,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAElD,6CAA6C;IAC7C,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAE9C,mDAAmD;IACnD,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAEjD;;;;OAIG;IACH,YAAY,CAAC,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAEnD,wEAAwE;IACxE,sBAAsB,CAAC,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;CACxE;AAED,8EAA8E;AAC9E,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,YAAY,CAAC;AAEnD,sDAAsD;AACtD,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,+DAA+D;IAC/D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wEAAwE;IACxE,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACjC"}
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,mBAAmB,EACnB,YAAY,EACZ,OAAO,EACP,YAAY,EACZ,SAAS,EACT,SAAS,EACT,SAAS,EACV,MAAM,YAAY,CAAC;AAEpB,uEAAuE;AACvE,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,cAAc,EAAE,YAAY,EAAE,CAAC;CAChC;AAED,mEAAmE;AACnE,MAAM,WAAW,oBAAoB;IACnC,wEAAwE;IACxE,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,kDAAkD;IAClD,cAAc,EAAE,YAAY,EAAE,CAAC;IAC/B,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,0DAA0D;IAC1D,aAAa,EAAE,OAAO,CAAC;IACvB;;;;OAIG;IACH,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B;AAED;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,oBAAoB,CAAC;IAC5C;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;IAEnC;;;;OAIG;IACH,UAAU,CACR,OAAO,CAAC,EAAE,OAAO,EACjB,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAC/C,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAExB,mEAAmE;IACnE,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAEpD,mEAAmE;IACnE,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAElD,6CAA6C;IAC7C,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAE9C,mDAAmD;IACnD,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAEjD;;;;OAIG;IACH,YAAY,CAAC,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAEnD,wEAAwE;IACxE,sBAAsB,CAAC,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;CACxE;AAED,8EAA8E;AAC9E,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,YAAY,CAAC;AAEnD,sDAAsD;AACtD,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,+DAA+D;IAC/D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wEAAwE;IACxE,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACjC"}

@@ -1,2 +0,2 @@

import type { ProviderCapabilities, ProviderConfig, RampProvider } from "../../provider.js";
import type { Environment, ProviderCapabilities, ProviderConfig, RampProvider } from "../../provider.js";
import type { DepositInstructions, Network, QuoteRequest, RampAsset, RampOrder, RampQuote } from "../../types.js";

@@ -21,3 +21,4 @@ export declare const ETHERFUSE_SANDBOX_URL = "https://api.sand.etherfuse.com";

private readonly http;
private readonly environment;
readonly environment: Environment;
private readonly idem;
private bankAccountId?;

@@ -56,2 +57,3 @@ constructor(config: EtherfuseConfig);

createOrder(quote: RampQuote): Promise<RampOrder>;
private postOrder;
getOrder(orderId: string): Promise<RampOrder>;

@@ -58,0 +60,0 @@ cancelOrder(orderId: string): Promise<RampOrder>;

@@ -1,1 +0,1 @@

{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/etherfuse/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,oBAAoB,EACpB,cAAc,EACd,YAAY,EACb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EACV,mBAAmB,EACnB,OAAO,EAEP,YAAY,EACZ,SAAS,EACT,SAAS,EACT,SAAS,EACV,MAAM,gBAAgB,CAAC;AAYxB,eAAO,MAAM,qBAAqB,mCAAmC,CAAC;AACtE,eAAO,MAAM,wBAAwB,8BAA8B,CAAC;AAEpE,MAAM,WAAW,eAAgB,SAAQ,cAAc;IACrD;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAYD;;;GAGG;AACH,qBAAa,iBAAkB,YAAW,YAAY;IACpD,QAAQ,CAAC,IAAI,eAAe;IAC5B,QAAQ,CAAC,YAAY,EAAE,oBAAoB,CAOzC;IAEF,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;IAClC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA2B;IACvD,OAAO,CAAC,aAAa,CAAC,CAAS;gBAEnB,MAAM,EAAE,eAAe;IAenC;;;OAGG;IACG,UAAU,CACd,OAAO,GAAE,OAAmB,EAC5B,OAAO,GAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAO,GACnD,OAAO,CAAC,SAAS,EAAE,CAAC;IAoBvB;;;;OAIG;IACG,cAAc,CAClB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,OAAmB,EAC5B,cAAc,UAAO,GACpB,OAAO,CAAC,IAAI,CAAC;IAQV,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC;IAuCzD,yEAAyE;IACnE,eAAe,IAAI,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IAIrE,mEAAmE;IACnE,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;IAI3C,4EAA4E;IACtE,gBAAgB,IAAI,OAAO,CAC/B,KAAK,CAAC;QACJ,aAAa,EAAE,MAAM,CAAC;QACtB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,OAAO,CAAC;KACpB,CAAC,CACH;IAaK,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IA4CjD,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAK7C,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAKtD,uEAAuE;IACjE,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAKjD,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAa3E;;;;OAIG;IACG,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW1D,OAAO,CAAC,cAAc;CAqBvB"}
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/etherfuse/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,WAAW,EACX,oBAAoB,EACpB,cAAc,EACd,YAAY,EACb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EACV,mBAAmB,EACnB,OAAO,EAEP,YAAY,EACZ,SAAS,EACT,SAAS,EACT,SAAS,EACV,MAAM,gBAAgB,CAAC;AAYxB,eAAO,MAAM,qBAAqB,mCAAmC,CAAC;AACtE,eAAO,MAAM,wBAAwB,8BAA8B,CAAC;AAEpE,MAAM,WAAW,eAAgB,SAAQ,cAAc;IACrD;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAYD;;;GAGG;AACH,qBAAa,iBAAkB,YAAW,YAAY;IACpD,QAAQ,CAAC,IAAI,eAAe;IAC5B,QAAQ,CAAC,YAAY,EAAE,oBAAoB,CAOzC;IAEF,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;IAClC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA0B;IAC/C,OAAO,CAAC,aAAa,CAAC,CAAS;gBAEnB,MAAM,EAAE,eAAe;IAenC;;;OAGG;IACG,UAAU,CACd,OAAO,GAAE,OAAmB,EAC5B,OAAO,GAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAO,GACnD,OAAO,CAAC,SAAS,EAAE,CAAC;IAoBvB;;;;OAIG;IACG,cAAc,CAClB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,OAAmB,EAC5B,cAAc,UAAO,GACpB,OAAO,CAAC,IAAI,CAAC;IAQV,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC;IAwCzD,yEAAyE;IACnE,eAAe,IAAI,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IAIrE,mEAAmE;IACnE,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;IAI3C,4EAA4E;IACtE,gBAAgB,IAAI,OAAO,CAC/B,KAAK,CAAC;QACJ,aAAa,EAAE,MAAM,CAAC;QACtB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,OAAO,CAAC;KACpB,CAAC,CACH;IAaK,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;YAiBzC,SAAS;IAoCjB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAK7C,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAKtD,uEAAuE;IACjE,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAKjD,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAa3E;;;;OAIG;IACG,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW1D,OAAO,CAAC,cAAc;CAqBvB"}
import { HttpClient } from "../../http.js";
import { OrderIdempotency, stableId } from "../../idempotency.js";
import { assertPositiveAmount } from "../../money.js";
import { RampError } from "../../types.js";

@@ -30,2 +32,3 @@ export const ETHERFUSE_SANDBOX_URL = "https://api.sand.etherfuse.com";

environment;
idem = new OrderIdempotency();
bankAccountId;

@@ -78,2 +81,3 @@ constructor(config) {

async getQuote(request) {
assertPositiveAmount(request.sourceAmount, "sourceAmount");
const payload = {

@@ -132,3 +136,8 @@ quoteId: crypto.randomUUID(),

}
const orderId = crypto.randomUUID();
// Derive orderId from the quote so a retried create reuses the same id —
// Etherfuse dedupes by orderId — instead of opening a second order.
const orderId = stableId(`${this.name}:${quote.id}`);
return this.idem.run(orderId, () => this.postOrder(orderId, quote));
}
async postOrder(orderId, quote) {
const payload = {

@@ -135,0 +144,0 @@ orderId,

@@ -1,1 +0,1 @@

{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/etherfuse/index.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/etherfuse/index.ts"],"names":[],"mappings":"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"}

@@ -1,2 +0,2 @@

import type { ProviderCapabilities, ProviderConfig, RampProvider } from "../../provider.js";
import type { Environment, ProviderCapabilities, ProviderConfig, RampProvider } from "../../provider.js";
import type { DepositInstructions, Network, QuoteRequest, RampAsset, RampOrder, RampQuote } from "../../types.js";

@@ -19,2 +19,4 @@ export declare const MANTECA_SANDBOX_URL = "https://sandbox.manteca.dev/crypto/v2";

private readonly http;
readonly environment: Environment;
private readonly idem;
constructor(config: ProviderConfig);

@@ -33,5 +35,15 @@ listAssets(network?: Network): Promise<RampAsset[]>;

exchange?: string;
/** Registered bank accounts — the offramp `payoutDestination` source. */
banking?: {
accounts?: Array<{
cbu?: string;
currency?: string;
description?: string;
[key: string]: unknown;
}>;
};
}>;
getQuote(request: QuoteRequest): Promise<RampQuote>;
createOrder(quote: RampQuote): Promise<RampOrder>;
private createRampOn;
private createRampOff;

@@ -38,0 +50,0 @@ getOrder(orderId: string): Promise<RampOrder>;

@@ -1,1 +0,1 @@

{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/manteca/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,oBAAoB,EACpB,cAAc,EACd,YAAY,EACb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EACV,mBAAmB,EAEnB,OAAO,EAEP,YAAY,EACZ,SAAS,EACT,SAAS,EACT,SAAS,EACV,MAAM,gBAAgB,CAAC;AAWxB,eAAO,MAAM,mBAAmB,0CAA0C,CAAC;AAC3E,eAAO,MAAM,sBAAsB,sCAAsC,CAAC;AAoB1E;;;;;;;;;GASG;AACH,qBAAa,eAAgB,YAAW,YAAY;IAClD,QAAQ,CAAC,IAAI,aAAa;IAG1B,QAAQ,CAAC,YAAY,EAAE,oBAAoB,CAgDzC;IAEF,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;gBAEtB,MAAM,EAAE,cAAc;IAa5B,UAAU,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IA0BzD;;;;OAIG;IACG,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QACxC,EAAE,EAAE,MAAM,CAAC;QACX,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IAII,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC;IA6BnD,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;YA8BzC,aAAa;IAerB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAO7C,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAKhD,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAY3E,OAAO,CAAC,kBAAkB;CA+B3B"}
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/manteca/index.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,WAAW,EACX,oBAAoB,EACpB,cAAc,EACd,YAAY,EACb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EACV,mBAAmB,EAEnB,OAAO,EAEP,YAAY,EACZ,SAAS,EACT,SAAS,EACT,SAAS,EACV,MAAM,gBAAgB,CAAC;AAWxB,eAAO,MAAM,mBAAmB,0CAA0C,CAAC;AAC3E,eAAO,MAAM,sBAAsB,sCAAsC,CAAC;AAoB1E;;;;;;;;;GASG;AACH,qBAAa,eAAgB,YAAW,YAAY;IAClD,QAAQ,CAAC,IAAI,aAAa;IAG1B,QAAQ,CAAC,YAAY,EAAE,oBAAoB,CAgDzC;IAEF,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;IAClC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA0B;gBAEnC,MAAM,EAAE,cAAc;IAc5B,UAAU,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IA0BzD;;;;OAIG;IACG,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QACxC,EAAE,EAAE,MAAM,CAAC;QACX,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,yEAAyE;QACzE,OAAO,CAAC,EAAE;YACR,QAAQ,CAAC,EAAE,KAAK,CAAC;gBACf,GAAG,CAAC,EAAE,MAAM,CAAC;gBACb,QAAQ,CAAC,EAAE,MAAM,CAAC;gBAClB,WAAW,CAAC,EAAE,MAAM,CAAC;gBACrB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;aACxB,CAAC,CAAC;SACJ,CAAC;KACH,CAAC;IAII,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC;IAkCnD,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;YAczC,YAAY;YA4BZ,aAAa;IA6BrB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAO7C,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAKhD,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAY3E,OAAO,CAAC,kBAAkB;CA+B3B"}
import { HttpClient } from "../../http.js";
import { OrderIdempotency, stableId } from "../../idempotency.js";
import { ASSET_DECIMALS, FIAT_DECIMALS, assertPositiveAmount, divideAmount, multiplyAmount, } from "../../money.js";
import { RampError } from "../../types.js";

@@ -85,3 +87,6 @@ export const MANTECA_SANDBOX_URL = "https://sandbox.manteca.dev/crypto/v2";

http;
environment;
idem = new OrderIdempotency();
constructor(config) {
this.environment = config.environment ?? "sandbox";
this.http = new HttpClient({

@@ -131,2 +136,4 @@ baseUrl: config.baseUrl ??

async getQuote(request) {
// Reject bad amounts before spending a price-lock on the provider.
assertPositiveAmount(request.sourceAmount, "sourceAmount");
const payload = {

@@ -141,6 +148,9 @@ userAnyId: request.customerId,

const lock = await this.http.post("/price-locks", payload);
const price = Number(lock.price);
const source = Number(request.sourceAmount);
// BUY: fiat -> asset (divide); SELL: asset -> fiat (multiply).
const target = request.direction === "onramp" ? source / price : source * price;
assertPositiveAmount(lock.price, "price");
// Exact decimal math — never Number(). BUY: fiat -> asset (divide, asset
// precision); SELL: asset -> fiat (multiply, fiat precision). Round down
// so the shown "you receive" is never more than what settles.
const targetAmount = request.direction === "onramp"
? divideAmount(request.sourceAmount, lock.price, ASSET_DECIMALS)
: multiplyAmount(request.sourceAmount, lock.price, FIAT_DECIMALS);
return {

@@ -150,3 +160,3 @@ id: lock.code,

request,
targetAmount: target.toFixed(6),
targetAmount,
rate: lock.price,

@@ -161,8 +171,14 @@ expiresAt: new Date(lock.expireAt),

}
// One quote → one synthetic. The stable externalId also lets Manteca
// dedupe a retried create upstream.
const externalId = stableId(`${this.name}:${quote.id}`);
return this.idem.run(externalId, () => quote.request.direction === "onramp"
? this.createRampOn(quote, externalId)
: this.createRampOff(quote, externalId));
}
async createRampOn(quote, externalId) {
const req = quote.request;
if (req.direction !== "onramp") {
return this.createRampOff(quote);
}
const payload = {
userAnyId: req.customerId,
externalId,
asset: req.assetIdentifier.split(":")[0],

@@ -184,6 +200,12 @@ against: req.fiatCurrency,

}
async createRampOff(quote) {
async createRampOff(quote, externalId) {
const req = quote.request;
// Ramp-off `destination` is the user's BANK ACCOUNT (CBU/CLABE/IBAN…),
// not a wallet — without it the API 400s with "destination is missing".
if (!req.payoutDestination?.address) {
throw new RampError("Manteca offramps require payoutDestination.address (the user's bank account: CBU, CLABE, IBAN…)", this.name, "unsupported");
}
const synthetic = await this.http.post("/synthetics/ramp-off", {
userAnyId: req.customerId,
externalId,
asset: req.assetIdentifier.split(":")[0],

@@ -193,2 +215,3 @@ against: req.fiatCurrency,

priceCode: quote.id,
destination: req.payoutDestination,
});

@@ -195,0 +218,0 @@ return this.normalizeSynthetic(synthetic, quote);

@@ -1,1 +0,1 @@

{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/manteca/index.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/manteca/index.ts"],"names":[],"mappings":"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"}

@@ -1,2 +0,2 @@

import type { ProviderCapabilities, RampProvider } from "../provider.js";
import type { Environment, ProviderCapabilities, RampProvider } from "../provider.js";
import type { Network, QuoteRequest, RampAsset, RampOrder, RampQuote } from "../types.js";

@@ -18,2 +18,3 @@ /**

readonly name = "mock";
readonly environment: Environment;
readonly capabilities: ProviderCapabilities;

@@ -20,0 +21,0 @@ private orders;

@@ -1,1 +0,1 @@

{"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../../src/providers/mock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,YAAY,EACb,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAEV,OAAO,EACP,YAAY,EACZ,SAAS,EACT,SAAS,EACT,SAAS,EACV,MAAM,aAAa,CAAC;AAkBrB;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,YAAa,YAAW,YAAY;IAWnC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAVpC,QAAQ,CAAC,IAAI,UAAU;IACvB,QAAQ,CAAC,YAAY,EAAE,oBAAoB,CAKzC;IAEF,OAAO,CAAC,MAAM,CAAqC;gBAEtB,OAAO,GAAE,mBAAwB;IAExD,UAAU,CAAC,OAAO,GAAE,OAAmB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAuB9D,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC;IAkBnD,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IA8BjD,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAS7C,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAUtD,kEAAkE;IAC5D,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ1D,OAAO,CAAC,OAAO;CAehB"}
{"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../../src/providers/mock.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,WAAW,EACX,oBAAoB,EACpB,YAAY,EACb,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAEV,OAAO,EACP,YAAY,EACZ,SAAS,EACT,SAAS,EACT,SAAS,EACV,MAAM,aAAa,CAAC;AAkBrB;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,YAAa,YAAW,YAAY;IAYnC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAXpC,QAAQ,CAAC,IAAI,UAAU;IACvB,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAa;IAC9C,QAAQ,CAAC,YAAY,EAAE,oBAAoB,CAKzC;IAEF,OAAO,CAAC,MAAM,CAAqC;gBAEtB,OAAO,GAAE,mBAAwB;IAExD,UAAU,CAAC,OAAO,GAAE,OAAmB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAuB9D,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC;IAsBnD,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IA8BjD,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAS7C,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAUtD,kEAAkE;IAC5D,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ1D,OAAO,CAAC,OAAO;CAehB"}

@@ -0,7 +1,8 @@

import { ASSET_DECIMALS, FIAT_DECIMALS, divideAmount, multiplyAmount, roundAmount, subtractAmounts, } from "../money.js";
import { RampError } from "../types.js";
/** Simulated per-currency rates (fiat units per 1 USDC-equivalent). */
const RATES = {
BRL: 5.26,
MXN: 18.2,
ARS: 1265,
BRL: "5.26",
MXN: "18.2",
ARS: "1265",
};

@@ -13,2 +14,3 @@ const PROCESSING_MS = 2500;

name = "mock";
environment = "sandbox";
capabilities = {

@@ -48,7 +50,11 @@ countries: ["BR", "MX", "AR"],

await delay(400);
const rate = RATES[request.fiatCurrency] ?? 1;
const source = Number(request.sourceAmount);
const gross = request.direction === "onramp" ? source / rate : source * rate;
const fee = source * 0.01;
const target = request.direction === "onramp" ? (source - fee) / rate : gross - fee * rate;
const rate = RATES[request.fiatCurrency] ?? "1";
const source = request.sourceAmount;
// Exact decimal math (no float): 1% fee, then convert the net amount.
const fee = multiplyAmount(source, "0.01", FIAT_DECIMALS);
const net = subtractAmounts(source, fee);
const isOnramp = request.direction === "onramp";
const target = isOnramp
? divideAmount(net, rate, ASSET_DECIMALS)
: multiplyAmount(net, rate, FIAT_DECIMALS);
return {

@@ -58,5 +64,5 @@ id: crypto.randomUUID(),

request,
targetAmount: target.toFixed(4),
rate: (1 / rate).toFixed(6),
fees: fee.toFixed(2),
targetAmount: target,
rate: divideAmount("1", rate, 6),
fees: roundAmount(fee, FIAT_DECIMALS),
expiresAt: new Date(Date.now() + 120_000),

@@ -63,0 +69,0 @@ };

@@ -1,1 +0,1 @@

{"version":3,"file":"mock.js","sourceRoot":"","sources":["../../src/providers/mock.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"mock.js","sourceRoot":"","sources":["../../src/providers/mock.ts"],"names":[],"mappings":"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"}

@@ -36,4 +36,9 @@ import type { RampProvider } from "./provider.js";

customerIds?: Record<string, string>;
/**
* Called for each provider that failed to quote, so failures aren't
* silently dropped from the comparison. Return value is ignored.
*/
onProviderError?: (provider: string, error: unknown) => void;
}): Promise<RampQuote[]>;
}
//# sourceMappingURL=router.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAwB,YAAY,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EACZ,OAAO,EACP,YAAY,EACZ,aAAa,EACb,SAAS,EACV,MAAM,YAAY,CAAC;AAGpB,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,YAAY,EAAE,YAAY,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,uEAAuE;IACvE,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;GAGG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,SAAS,CAAsB;IAEvC,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAKtC,4DAA4D;IAC5D,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,YAAY,EAAE;IAsB3C,yCAAyC;IACzC,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,YAAY;IAcxC;;;;;;;OAOG;IACG,aAAa,CACjB,OAAO,EAAE,YAAY,EACrB,KAAK,EAAE,UAAU,EACjB,OAAO,GAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAO,GACrD,OAAO,CAAC,SAAS,EAAE,CAAC;CAiBxB"}
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAwB,YAAY,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EACZ,OAAO,EACP,YAAY,EACZ,aAAa,EACb,SAAS,EACV,MAAM,YAAY,CAAC;AAGpB,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,YAAY,EAAE,YAAY,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,uEAAuE;IACvE,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;GAGG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,SAAS,CAAsB;IAEvC,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAKtC,4DAA4D;IAC5D,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,YAAY,EAAE;IAsB3C,yCAAyC;IACzC,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,YAAY;IAcxC;;;;;;;OAOG;IACG,aAAa,CACjB,OAAO,EAAE,YAAY,EACrB,KAAK,EAAE,UAAU,EACjB,OAAO,GAAE;QACP,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACrC;;;WAGG;QACH,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;KACzD,GACL,OAAO,CAAC,SAAS,EAAE,CAAC;CAoBxB"}

@@ -0,1 +1,2 @@

import { compareAmounts } from "./money.js";
import { RampError } from "./types.js";

@@ -60,8 +61,28 @@ /**

})));
return results
.filter((r) => r.status === "fulfilled")
.map((r) => r.value)
.sort((a, b) => Number(b.targetAmount) - Number(a.targetAmount));
const quotes = [];
results.forEach((r, i) => {
if (r.status === "fulfilled") {
quotes.push(r.value);
}
else {
options.onProviderError?.(candidates[i].name, r.reason);
}
});
return quotes.sort(bestFirst);
}
}
/**
* Best quote first: higher `targetAmount` (what the user receives) wins,
* decimal-exact so float noise can't flip ties; equal amounts break toward
* lower `fees`. `targetAmount` is assumed net of fees.
*/
function bestFirst(a, b) {
const byTarget = compareAmounts(b.targetAmount, a.targetAmount);
if (byTarget !== 0)
return byTarget;
if (a.fees !== undefined && b.fees !== undefined) {
return compareAmounts(a.fees, b.fees);
}
return 0;
}
function score(c) {

@@ -68,0 +89,0 @@ return c.stellarNative ? 1 : 0;

@@ -1,1 +0,1 @@

{"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}

@@ -1,2 +0,2 @@

import { Asset } from "@stellar/stellar-sdk";
import { Asset, Horizon } from "@stellar/stellar-sdk";
export declare const TESTNET_HORIZON = "https://horizon-testnet.stellar.org";

@@ -28,15 +28,77 @@ export declare const PUBLIC_HORIZON = "https://horizon.stellar.org";

export declare function getAccountState(publicKey: string, assetIdentifier: string, config?: StellarConfig): Promise<StellarAccountState>;
/** Fee-selection options for transactions the kit builds or fee-bumps. */
export interface FeeOptions {
/**
* Percentile of recent fee bids to target — higher pays more but is more
* likely to be included during congestion. Default "p80".
*/
percentile?: "p10" | "p30" | "p50" | "p70" | "p80" | "p90" | "p95" | "p99";
/** Hard cap in stroops so a fee spike can't drain the account. Default 100000 (0.01 XLM). */
maxFeeStroops?: number;
}
/**
* Per-operation fee (stroops) from recent network activity, so txs survive
* surge pricing (a fixed BASE_FEE fails in production with tx_insufficient_fee).
* Falls back to BASE_FEE when fee stats are unavailable.
*/
export declare function fetchRecommendedFee(server: Horizon.Server, options?: FeeOptions): Promise<string>;
/** Controls how submission recovers from Horizon timeouts. */
export interface SubmitPolicy {
/** Resubmit the same signed tx on a Horizon 504/503 timeout. Default true. */
resubmitOnTimeout?: boolean;
/** Max resubmit attempts after timeouts. Default 5. */
maxResubmits?: number;
/** Base backoff between resubmits (ms), grows linearly. Default 2000. */
backoffMs?: number;
/** Injected sleep (tests). */
sleep?: (ms: number) => Promise<void>;
}
/**
* Submit, resubmitting the SAME signed envelope on a Horizon 504/503 (the tx
* may already be in a ledger; identical hash makes resubmit safe). Definitive
* failures become actionable RampErrors.
*/
export declare function resilientSubmit<T>(submit: () => Promise<T>, policy?: SubmitPolicy): Promise<T>;
/**
* Per-op base fee for a fee-bump: at least the inner tx's rate, never above
* `maxFeeStroops` — throw rather than overspend when the inner tx's own fee
* already exceeds the cap.
*/
export declare function feeBumpBaseFee(recommendedStroops: string, innerFeeStroops: string, innerOpCount: number, maxFeeStroops?: number): string;
export interface SignAndSubmitOptions extends SubmitPolicy {
/**
* Auto fee-bump on tx_insufficient_fee: the payer (`feeSourcePublicKey`,
* usually the user) covers a higher fee without the provider re-signing.
*/
feeBump?: {
feeSourcePublicKey: string;
} & FeeOptions;
}
/**
* Sign a provider-built transaction (offramp burn tx / claimable balance
* claim) and submit it to Horizon.
* claim) and submit it to Horizon, with timeout resubmission and optional
* fee-bump on insufficient fee.
*
* `sign` receives the XDR and must return the signed XDR — pass a wallet
* integration (e.g. Freighter's signTransaction) or a Keypair-based signer.
*
* Provider-built Stellar txs expire in ~1-2 minutes: if submission fails
* with tx_too_late, call the provider's regenerateTx() and retry.
*/
export declare function signAndSubmit(unsignedXdr: string, sign: (xdr: string, networkPassphrase: string) => Promise<string>, config?: StellarConfig): Promise<{
export declare function signAndSubmit(unsignedXdr: string, sign: (xdr: string, networkPassphrase: string) => Promise<string>, config?: StellarConfig, options?: SignAndSubmitOptions): Promise<{
hash: string;
}>;
/**
* resilientSubmit plus a safeguard: a tx_bad_seq after a resubmit can mean an
* earlier timed-out attempt already landed (consuming the sequence). Check the
* hash on Horizon and report success if the tx is there.
*/
export declare function submitWithRecovery(hash: string, submit: () => Promise<{
hash: string;
}>, isOnChain: () => Promise<boolean>, policy?: SubmitPolicy): Promise<{
hash: string;
}>;
/**
* Wrap a signed inner tx in a fee-bump envelope so a payer can cover a higher
* fee WITHOUT the inner signers (e.g. the provider) re-signing. Returns the
* unsigned fee-bump XDR for `feeSourcePublicKey` to sign.
*/
export declare function wrapWithFeeBump(innerSignedXdr: string, feeSourcePublicKey: string, passphrase: string, baseFeeStroops: string): string;
export interface PendingBalance {

@@ -55,3 +117,5 @@ id: string;

*/
export declare function claimPendingBalances(publicKey: string, sign: (xdr: string, networkPassphrase: string) => Promise<string>, config?: StellarConfig): Promise<{
export declare function claimPendingBalances(publicKey: string, sign: (xdr: string, networkPassphrase: string) => Promise<string>, config?: StellarConfig, options?: SubmitPolicy & {
fee?: FeeOptions;
}): Promise<{
hash: string;

@@ -58,0 +122,0 @@ claimed: PendingBalance[];

@@ -1,1 +0,1 @@

{"version":3,"file":"stellar.d.ts","sourceRoot":"","sources":["../src/stellar.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EAMN,MAAM,sBAAsB,CAAC;AAG9B,eAAO,MAAM,eAAe,wCAAwC,CAAC;AACrE,eAAO,MAAM,cAAc,gCAAgC,CAAC;AAE5D,MAAM,WAAW,aAAa;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,SAAS,GAAG,YAAY,GACpC,QAAQ,CAAC,aAAa,CAAC,CAIzB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,gFAAgF;IAChF,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,4EAA4E;AAC5E,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,KAAK,CAU9D;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,EACvB,MAAM,GAAE,aAAkB,GACzB,OAAO,CAAC,mBAAmB,CAAC,CAmC9B;AAED;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,EACjE,MAAM,GAAE,aAAkB,GACzB,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAmB3B;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,kFAAkF;AAClF,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,MAAM,EACjB,MAAM,GAAE,aAAkB,GACzB,OAAO,CAAC,cAAc,EAAE,CAAC,CAI3B;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,EACjE,MAAM,GAAE,aAAkB,GACzB,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,cAAc,EAAE,CAAA;CAAE,GAAG,IAAI,CAAC,CAgD7D"}
{"version":3,"file":"stellar.d.ts","sourceRoot":"","sources":["../src/stellar.ts"],"names":[],"mappings":"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"}

@@ -57,12 +57,73 @@ import { Asset, BASE_FEE, Horizon, Networks, Operation, TransactionBuilder, } from "@stellar/stellar-sdk";

/**
* Per-operation fee (stroops) from recent network activity, so txs survive
* surge pricing (a fixed BASE_FEE fails in production with tx_insufficient_fee).
* Falls back to BASE_FEE when fee stats are unavailable.
*/
export async function fetchRecommendedFee(server, options = {}) {
const percentile = options.percentile ?? "p80";
const cap = options.maxFeeStroops ?? 100_000;
// A cap below the network minimum can never produce a valid fee — fail
// loudly instead of quietly exceeding the caller's stated ceiling.
if (cap < Number(BASE_FEE)) {
throw new RampError(`maxFeeStroops (${cap}) is below the network minimum fee (${BASE_FEE})`, "stellar", "network");
}
try {
const stats = await server.feeStats();
const maxFee = stats.max_fee;
const bid = Number(maxFee?.[percentile] ?? stats.last_ledger_base_fee);
if (!Number.isFinite(bid))
return BASE_FEE;
return String(Math.max(Number(BASE_FEE), Math.min(Math.ceil(bid), cap)));
}
catch {
return BASE_FEE;
}
}
/**
* Submit, resubmitting the SAME signed envelope on a Horizon 504/503 (the tx
* may already be in a ledger; identical hash makes resubmit safe). Definitive
* failures become actionable RampErrors.
*/
export async function resilientSubmit(submit, policy = {}) {
const resubmitOnTimeout = policy.resubmitOnTimeout ?? true;
const maxResubmits = policy.maxResubmits ?? 5;
const backoffMs = policy.backoffMs ?? 2000;
const sleep = policy.sleep ?? ((ms) => new Promise((r) => setTimeout(r, ms)));
let attempt = 0;
for (;;) {
try {
return await submit();
}
catch (err) {
if (resubmitOnTimeout && isHorizonTimeout(err) && attempt < maxResubmits) {
attempt += 1;
await sleep(backoffMs * attempt);
continue;
}
throw classifySubmitError(err);
}
}
}
/**
* Per-op base fee for a fee-bump: at least the inner tx's rate, never above
* `maxFeeStroops` — throw rather than overspend when the inner tx's own fee
* already exceeds the cap.
*/
export function feeBumpBaseFee(recommendedStroops, innerFeeStroops, innerOpCount, maxFeeStroops = 100_000) {
const innerPerOp = Math.ceil(Number(innerFeeStroops) / Math.max(1, innerOpCount));
const minRequired = Math.max(innerPerOp, Number(BASE_FEE));
if (minRequired > maxFeeStroops) {
throw new RampError(`Fee-bump needs at least ${minRequired} stroops/op (inner tx fee) but maxFeeStroops caps it at ${maxFeeStroops}`, "stellar", "network");
}
return String(Math.min(Math.max(Number(recommendedStroops), minRequired), maxFeeStroops));
}
/**
* Sign a provider-built transaction (offramp burn tx / claimable balance
* claim) and submit it to Horizon.
* claim) and submit it to Horizon, with timeout resubmission and optional
* fee-bump on insufficient fee.
*
* `sign` receives the XDR and must return the signed XDR — pass a wallet
* integration (e.g. Freighter's signTransaction) or a Keypair-based signer.
*
* Provider-built Stellar txs expire in ~1-2 minutes: if submission fails
* with tx_too_late, call the provider's regenerateTx() and retry.
*/
export async function signAndSubmit(unsignedXdr, sign, config = {}) {
export async function signAndSubmit(unsignedXdr, sign, config = {}, options = {}) {
const passphrase = config.networkPassphrase ?? Networks.TESTNET;

@@ -72,13 +133,60 @@ const server = new Horizon.Server(config.horizonUrl ?? TESTNET_HORIZON);

const tx = TransactionBuilder.fromXDR(signedXdr, passphrase);
const hash = tx.hash().toString("hex");
try {
const res = await server.submitTransaction(tx);
return { hash: res.hash };
return await submitWithRecovery(hash, () => server.submitTransaction(tx).then((r) => ({ hash: r.hash })), () => txSucceededOnChain(server, hash), options);
}
catch (err) {
if (isTxTooLate(err)) {
throw new RampError("Transaction expired before submission — regenerate it via the provider and retry", "stellar", "tx_expired", err);
if (options.feeBump && err instanceof RampError && isInsufficientFee(err)) {
return feeBumpAndSubmit(server, signedXdr, sign, passphrase, options.feeBump, options);
}
throw new RampError("Transaction submission failed", "stellar", "network", err);
throw err;
}
}
/**
* resilientSubmit plus a safeguard: a tx_bad_seq after a resubmit can mean an
* earlier timed-out attempt already landed (consuming the sequence). Check the
* hash on Horizon and report success if the tx is there.
*/
export async function submitWithRecovery(hash, submit, isOnChain, policy = {}) {
try {
return await resilientSubmit(submit, policy);
}
catch (err) {
if (err instanceof RampError &&
isBadSeq(err) &&
(await isOnChain().catch(() => false))) {
return { hash };
}
throw err;
}
}
/** True when the tx with this hash is in a ledger and succeeded. */
async function txSucceededOnChain(server, hash) {
try {
const record = await server.transactions().transaction(hash).call();
return record.successful !== false;
}
catch {
return false;
}
}
/**
* Wrap a signed inner tx in a fee-bump envelope so a payer can cover a higher
* fee WITHOUT the inner signers (e.g. the provider) re-signing. Returns the
* unsigned fee-bump XDR for `feeSourcePublicKey` to sign.
*/
export function wrapWithFeeBump(innerSignedXdr, feeSourcePublicKey, passphrase, baseFeeStroops) {
const inner = TransactionBuilder.fromXDR(innerSignedXdr, passphrase);
return TransactionBuilder.buildFeeBumpTransaction(feeSourcePublicKey, baseFeeStroops, inner, passphrase).toXDR();
}
async function feeBumpAndSubmit(server, innerSignedXdr, sign, passphrase, feeBump, policy) {
const inner = TransactionBuilder.fromXDR(innerSignedXdr, passphrase);
const recommended = await fetchRecommendedFee(server, feeBump);
const baseFee = feeBumpBaseFee(recommended, inner.fee, inner.operations.length, feeBump.maxFeeStroops);
const bumpXdr = wrapWithFeeBump(innerSignedXdr, feeBump.feeSourcePublicKey, passphrase, baseFee);
const signed = await sign(bumpXdr, passphrase);
const tx = TransactionBuilder.fromXDR(signed, passphrase);
const hash = tx.hash().toString("hex");
return submitWithRecovery(hash, () => server.submitTransaction(tx).then((r) => ({ hash: r.hash })), () => txSucceededOnChain(server, hash), policy);
}
/** List claimable balances waiting for a wallet (sponsored onramp deliveries). */

@@ -96,3 +204,3 @@ export async function getPendingBalances(publicKey, config = {}) {

*/
export async function claimPendingBalances(publicKey, sign, config = {}) {
export async function claimPendingBalances(publicKey, sign, config = {}, options = {}) {
const server = new Horizon.Server(config.horizonUrl ?? TESTNET_HORIZON);

@@ -104,2 +212,3 @@ const passphrase = config.networkPassphrase ?? Networks.TESTNET;

const account = await server.loadAccount(publicKey);
const fee = await fetchRecommendedFee(server, options.fee);
const existingTrustlines = new Set(account.balances

@@ -110,3 +219,3 @@ .filter((b) => b.asset_type === "credit_alphanum4" ||

const builder = new TransactionBuilder(account, {
fee: BASE_FEE,
fee,
networkPassphrase: passphrase,

@@ -126,9 +235,5 @@ });

const signed = TransactionBuilder.fromXDR(signedXdr, passphrase);
try {
const res = await server.submitTransaction(signed);
return { hash: res.hash, claimed: pending };
}
catch (err) {
throw new RampError("Failed to claim pending balances", "stellar", "network", err);
}
const signedHash = signed.hash().toString("hex");
const { hash } = await submitWithRecovery(signedHash, () => server.submitTransaction(signed).then((r) => ({ hash: r.hash })), () => txSucceededOnChain(server, signedHash), options);
return { hash, claimed: pending };
}

@@ -141,6 +246,34 @@ function isNotFound(err) {

}
function isTxTooLate(err) {
const codes = err?.response?.data?.extras?.result_codes;
return codes?.transaction === "tx_too_late";
function resultCodes(err) {
return err?.response?.data?.extras?.result_codes;
}
function isHorizonTimeout(err) {
const status = err?.response?.status;
return status === 504 || status === 503;
}
/** True when a classified RampError wraps a tx_insufficient_fee failure. */
function isInsufficientFee(err) {
return resultCodes(err.cause)?.transaction === "tx_insufficient_fee";
}
/** True when a classified RampError wraps a tx_bad_seq failure. */
function isBadSeq(err) {
return resultCodes(err.cause)?.transaction === "tx_bad_seq";
}
/** Map a Horizon submission failure to an actionable RampError. */
function classifySubmitError(err) {
if (err instanceof RampError)
return err;
switch (resultCodes(err)?.transaction) {
case "tx_too_late":
return new RampError("Transaction expired before submission — regenerate it via the provider and retry", "stellar", "tx_expired", err);
case "tx_insufficient_fee":
return new RampError("Network fee too low for current congestion — fee-bump or regenerate with a higher fee", "stellar", "network", err);
case "tx_bad_seq":
return new RampError("Sequence number mismatch — reload the account and rebuild the transaction", "stellar", "network", err);
case "tx_too_early":
return new RampError("Transaction not yet valid (time bounds) — retry after its minimum time", "stellar", "network", err);
default:
return new RampError("Transaction submission failed", "stellar", "network", err);
}
}
//# sourceMappingURL=stellar.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"stellar.js","sourceRoot":"","sources":["../src/stellar.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"stellar.js","sourceRoot":"","sources":["../src/stellar.ts"],"names":[],"mappings":"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"}

@@ -43,2 +43,13 @@ /**

walletAddress?: string;
/**
* Where fiat is paid out on an offramp: a bank account identifier in the
* local format (CBU, CLABE, IBAN, PIX key…) plus any provider-specific
* extras, passed through untouched. Required by providers that pay out to
* a per-order account (Manteca); ignored by providers that use a
* pre-registered account (Etherfuse).
*/
payoutDestination?: {
address: string;
[key: string]: unknown;
};
}

@@ -97,2 +108,8 @@ /** Normalized quote. Always check `expiresAt` — providers expire quotes fast. */

depositInstructions?: DepositInstructions;
/**
* Hosted flow the user must open to finish the order (SEP-24 interactive
* deposit/withdraw, or an anchor "more info" page). The kit never scrapes
* it — hand it to the user's browser/webview.
*/
interactiveUrl?: string;
/** Base64 transaction envelope awaiting signature, when status is awaiting_signature. */

@@ -111,6 +128,6 @@ unsignedTx?: string;

readonly provider: string;
readonly code: "auth" | "quote_expired" | "tx_expired" | "kyc_required" | "unsupported" | "network" | "provider_error";
readonly code: "auth" | "quote_expired" | "tx_expired" | "kyc_required" | "unsupported" | "invalid_amount" | "network" | "provider_error";
readonly cause?: unknown | undefined;
constructor(message: string, provider: string, code: "auth" | "quote_expired" | "tx_expired" | "kyc_required" | "unsupported" | "network" | "provider_error", cause?: unknown | undefined);
constructor(message: string, provider: string, code: "auth" | "quote_expired" | "tx_expired" | "kyc_required" | "unsupported" | "invalid_amount" | "network" | "provider_error", cause?: unknown | undefined);
}
//# sourceMappingURL=types.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAqJH,wDAAwD;AACxD,MAAM,OAAO,SAAU,SAAQ,KAAK;IAGhB;IACA;IAQA;IAXlB,YACE,OAAe,EACC,QAAgB,EAChB,IAOI,EACJ,KAAe;QAE/B,KAAK,CAAC,OAAO,CAAC,CAAC;QAXC,aAAQ,GAAR,QAAQ,CAAQ;QAChB,SAAI,GAAJ,IAAI,CAOA;QACJ,UAAK,GAAL,KAAK,CAAU;QAG/B,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;IAC1B,CAAC;CACF"}
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAmKH,wDAAwD;AACxD,MAAM,OAAO,SAAU,SAAQ,KAAK;IAGhB;IACA;IASA;IAZlB,YACE,OAAe,EACC,QAAgB,EAChB,IAQI,EACJ,KAAe;QAE/B,KAAK,CAAC,OAAO,CAAC,CAAC;QAZC,aAAQ,GAAR,QAAQ,CAAQ;QAChB,SAAI,GAAJ,IAAI,CAQA;QACJ,UAAK,GAAL,KAAK,CAAU;QAG/B,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;IAC1B,CAAC;CACF"}
{
"name": "@ramp-kit/core",
"version": "0.1.5",
"version": "0.1.6",
"description": "Unified fiat on/off-ramp SDK for LATAM on Stellar: one provider interface over Etherfuse (PIX/SPEI, Stellar-native) and Manteca, with quote/order lifecycle normalization, multi-provider routing with live quote comparison, mock provider, and Stellar helpers (trustlines, claimable-balance claims, tx signing)",

@@ -5,0 +5,0 @@ "type": "module",

@@ -24,3 +24,3 @@ # @ramp-kit/core

| `EtherfuseProvider` | BRL (PIX), MXN (SPEI) | **Stellar (native)**, Solana, Base, Polygon | Automatic trustlines, sponsored wallet onboarding via claimable balances, sandbox with full payment simulation |
| `MantecaProvider` | BRL (PIX), ARS, MXN, CLP, COP, PEN… | EVM chains, Tron | Price locks + multi-stage synthetics, mapped to the same lifecycle |
| `MantecaProvider` | **In:** BRL (PIX), ARS, MXN, CLP · **Out:** those + COP, PEN, GTQ, CRC, BOB, PUSD, PHP | **Stellar**, EVM chains, Tron | Broadest LATAM payout coverage (11 countries). Price locks + multi-stage synthetics, mapped to the same lifecycle |
| `MockProvider` | BRL, MXN, ARS | Stellar | In-memory, realistic timing, optional auto-funding — for UI dev and tests |

@@ -120,2 +120,11 @@

// Routing is direction-aware: a provider may pay out in more countries than
// it takes deposits in (Manteca: 11 vs 4). Providers declare that through
// `capabilities.onramp` / `capabilities.offramp`.
const payout = router.resolve({
country: "CO",
fiatCurrency: "COP",
direction: "offramp", // an onramp here resolves to no provider
});
// Or fan out and compare live quotes across all eligible providers

@@ -122,0 +131,0 @@ const quotes = await router.compareQuotes(request, { fiatCurrency: "BRL" });

export {};
//# sourceMappingURL=router.test.d.ts.map
{"version":3,"file":"router.test.d.ts","sourceRoot":"","sources":["../src/router.test.ts"],"names":[],"mappings":""}
import { describe, expect, it } from "vitest";
import { RampRouter } from "./router.js";
import { MantecaProvider } from "./providers/manteca/index.js";
import { EtherfuseProvider } from "./providers/etherfuse/index.js";
const manteca = new MantecaProvider({ apiKey: "test" });
const etherfuse = new EtherfuseProvider({ apiKey: "test" });
const router = new RampRouter().register(etherfuse).register(manteca);
describe("direction-aware routing", () => {
it("routes Colombian payouts to Manteca (offramp-only rail)", () => {
const names = router
.eligible({ country: "CO", fiatCurrency: "COP", direction: "offramp" })
.map((p) => p.name);
expect(names).toContain("manteca");
});
it("does NOT offer Colombia for onramp — Manteca takes no COP deposits", () => {
const names = router
.eligible({ country: "CO", fiatCurrency: "COP", direction: "onramp" })
.map((p) => p.name);
expect(names).not.toContain("manteca");
});
it("serves Brazil in both directions", () => {
for (const direction of ["onramp", "offramp"]) {
const names = router
.eligible({ country: "BR", fiatCurrency: "BRL", direction })
.map((p) => p.name);
expect(names).toContain("manteca");
expect(names).toContain("etherfuse");
}
});
it("covers the wider payout currencies", () => {
for (const fiatCurrency of ["GTQ", "CRC", "BOB", "PHP", "PUSD"]) {
const names = router
.eligible({ fiatCurrency, direction: "offramp" })
.map((p) => p.name);
expect(names).toContain("manteca");
}
});
it("prefers the Stellar-native provider when both qualify", () => {
const [best] = router.eligible({
country: "BR",
fiatCurrency: "BRL",
network: "stellar",
});
expect(best.name).toBe("etherfuse");
});
});
//# sourceMappingURL=router.test.js.map
{"version":3,"file":"router.test.js","sourceRoot":"","sources":["../src/router.test.ts"],"names":[],"mappings":"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"}