@ramp-kit/core
Advanced tools
| /** | ||
| * 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"} |
+150
| /** | ||
| * 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 +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
-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.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":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EACL,cAAc,EACd,aAAa,EACb,oBAAoB,EACpB,YAAY,EACZ,cAAc,GACf,MAAM,gBAAgB,CAAC;AAiBxB,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAU3C,MAAM,CAAC,MAAM,mBAAmB,GAAG,uCAAuC,CAAC;AAC3E,MAAM,CAAC,MAAM,sBAAsB,GAAG,mCAAmC,CAAC;AAE1E,MAAM,UAAU,GAAgD;IAC9D,QAAQ,EAAE,SAAS;IACnB,OAAO,EAAE,kBAAkB;IAC3B,MAAM,EAAE,YAAY;IACpB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,WAAW;CACvB,CAAC;AAEF,wEAAwE;AACxE,MAAM,gBAAgB,GAA0C;IAC9D,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,eAAe;IACpB,GAAG,EAAE,eAAe;IACpB,GAAG,EAAE,iBAAiB;IACtB,GAAG,EAAE,eAAe;CACrB,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,OAAO,eAAe;IACjB,IAAI,GAAG,SAAS,CAAC;IAC1B,yEAAyE;IACzE,6CAA6C;IACpC,YAAY,GAAyB;QAC5C,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;QAC7E,cAAc,EAAE;YACd,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,MAAM;YACN,KAAK;SACN;QACD,MAAM,EAAE;YACN,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;YACnC,cAAc,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;SACpD;QACD,OAAO,EAAE;YACP,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;YAC7E,cAAc,EAAE;gBACd,KAAK;gBACL,KAAK;gBACL,KAAK;gBACL,KAAK;gBACL,KAAK;gBACL,KAAK;gBACL,KAAK;gBACL,KAAK;gBACL,KAAK;gBACL,KAAK;gBACL,MAAM;gBACN,KAAK;aACN;SACF;QACD,QAAQ,EAAE;YACR,SAAS;YACT,UAAU;YACV,KAAK;YACL,SAAS;YACT,UAAU;YACV,MAAM;YACN,UAAU;YACV,MAAM;SACP;QACD,aAAa,EAAE,KAAK;KACrB,CAAC;IAEe,IAAI,CAAa;IACzB,WAAW,CAAc;IACjB,IAAI,GAAG,IAAI,gBAAgB,EAAE,CAAC;IAE/C,YAAY,MAAsB;QAChC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,SAAS,CAAC;QACnD,IAAI,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC;YACzB,OAAO,EACL,MAAM,CAAC,OAAO;gBACd,CAAC,MAAM,CAAC,WAAW,KAAK,YAAY;oBAClC,CAAC,CAAC,sBAAsB;oBACxB,CAAC,CAAC,mBAAmB,CAAC;YAC1B,OAAO,EAAE,EAAE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE;YACxC,SAAS,EAAE,MAAM,CAAC,KAAK;YACvB,YAAY,EAAE,IAAI,CAAC,IAAI;SACxB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAAiB;QAChC,gFAAgF;QAChF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAE7B,wBAAwB,CAAC,CAAC;QAC5B,MAAM,MAAM,GAAgB,EAAE,CAAC;QAC/B,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAChD,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;YAC7B,IAAI,CAAC,GAAG;gBAAE,SAAS;YACnB,IAAI,OAAO,IAAI,GAAG,KAAK,OAAO;gBAAE,SAAS;YACzC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC;gBACtB,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;gBACvB,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;aACzB,CAAC,CAAC;YACH,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,MAAM,CAAC,IAAI,CAAC;oBACV,UAAU,EAAE,MAAM;oBAClB,MAAM;oBACN,OAAO,EAAE,GAAG;oBACZ,UAAU,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;iBAClC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,OAAO,CAAC,SAAiB;QAgB7B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,SAAS,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAqB;QAClC,mEAAmE;QACnE,oBAAoB,CAAC,OAAO,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;QAC3D,MAAM,OAAO,GAA4B;YACvC,SAAS,EAAE,OAAO,CAAC,UAAU;YAC7B,IAAI,EAAE,OAAO,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM;YACrD,mEAAmE;YACnE,uEAAuE;YACvE,KAAK,EAAE,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC5C,OAAO,EAAE,OAAO,CAAC,YAAY;SAC9B,CAAC;QACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAC/B,cAAc,EACd,OAAO,CACR,CAAC;QACF,oBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC1C,yEAAyE;QACzE,yEAAyE;QACzE,8DAA8D;QAC9D,MAAM,YAAY,GAChB,OAAO,CAAC,SAAS,KAAK,QAAQ;YAC5B,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,EAAE,cAAc,CAAC;YAChE,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;QACtE,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,IAAI;YACb,QAAQ,EAAE,IAAI,CAAC,IAAI;YACnB,OAAO;YACP,YAAY;YACZ,IAAI,EAAE,IAAI,CAAC,KAAK;YAChB,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;YAClC,GAAG,EAAE,IAAI;SACV,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAAgB;QAChC,IAAI,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YAC3C,MAAM,IAAI,SAAS,CAAC,oBAAoB,EAAE,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;QACxE,CAAC;QACD,qEAAqE;QACrE,oCAAoC;QACpC,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,EAAE,CACpC,KAAK,CAAC,OAAO,CAAC,SAAS,KAAK,QAAQ;YAClC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,UAAU,CAAC;YACtC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,UAAU,CAAC,CAC1C,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,YAAY,CACxB,KAAgB,EAChB,UAAkB;QAElB,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC;QAC1B,MAAM,OAAO,GAAyB;YACpC,SAAS,EAAE,GAAG,CAAC,UAAU;YACzB,UAAU;YACV,KAAK,EAAE,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACxC,OAAO,EAAE,GAAG,CAAC,YAAY;YACzB,aAAa,EAAE,GAAG,CAAC,YAAY;YAC/B,SAAS,EAAE,KAAK,CAAC,EAAE;YACnB,GAAG,CAAC,GAAG,CAAC,aAAa;gBACnB,CAAC,CAAC;oBACE,WAAW,EAAE;wBACX,OAAO,EAAE,GAAG,CAAC,aAAa;wBAC1B,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;qBAC9B;iBACF;gBACH,CAAC,CAAC,EAAE,CAAC;SACR,CAAC;QACF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CACpC,qBAAqB,EACrB,OAAO,CACR,CAAC;QACF,OAAO,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACnD,CAAC;IAEO,KAAK,CAAC,aAAa,CACzB,KAAgB,EAChB,UAAkB;QAElB,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC;QAC1B,uEAAuE;QACvE,wEAAwE;QACxE,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,OAAO,EAAE,CAAC;YACpC,MAAM,IAAI,SAAS,CACjB,iGAAiG,EACjG,IAAI,CAAC,IAAI,EACT,aAAa,CACd,CAAC;QACJ,CAAC;QACD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CACpC,sBAAsB,EACtB;YACE,SAAS,EAAE,GAAG,CAAC,UAAU;YACzB,UAAU;YACV,KAAK,EAAE,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACxC,OAAO,EAAE,GAAG,CAAC,YAAY;YACzB,WAAW,EAAE,GAAG,CAAC,YAAY;YAC7B,SAAS,EAAE,KAAK,CAAC,EAAE;YACnB,WAAW,EAAE,GAAG,CAAC,iBAAiB;SACnC,CACF,CAAC;QACF,OAAO,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAe;QAC5B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CACnC,eAAe,OAAO,EAAE,CACzB,CAAC;QACF,OAAO,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAe;QAC/B,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,OAAO,SAAS,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,sBAAsB,CAAC,OAAe;QAC1C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC;YAC/B,MAAM,IAAI,SAAS,CACjB,aAAa,OAAO,8BAA8B,EAClD,IAAI,CAAC,IAAI,EACT,gBAAgB,CACjB,CAAC;QACJ,CAAC;QACD,OAAO,KAAK,CAAC,mBAAmB,CAAC;IACnC,CAAC;IAEO,kBAAkB,CACxB,SAA2B,EAC3B,KAAiB;QAEjB,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,YAAY;YACvC,SAAS,CAAC,SAAS,CAAC,CAAiB,CAAC;QACxC,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACtD,OAAO;YACL,EAAE,EAAE,SAAS,CAAC,EAAE;YAChB,QAAQ,EAAE,IAAI,CAAC,IAAI;YACnB,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;YAC3C,MAAM,EAAE,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC;YACpC,KAAK;YACL,mBAAmB,EAAE,SAAS,CAAC,OAAO,CAAC,cAAc;gBACnD,CAAC,CAAC;oBACE,IAAI,EAAE,gBAAgB,CAAC,IAAI,CAAC,IAAI,eAAe;oBAC/C,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,cAAc;oBACzC,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,YAAY;oBACrC,MAAM,EACJ,SAAS,CAAC,OAAO,CAAC,qBAAqB;wBACvC,KAAK,EAAE,OAAO,CAAC,YAAY;wBAC3B,GAAG;oBACL,QAAQ,EAAE,IAAI;iBACf;gBACH,CAAC,CAAC,SAAS;YACb,aAAa,EAAE,SAAS,CAAC,kBAAkB;YAC3C,SAAS,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;YAC3C,SAAS,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;YACxC,GAAG,EAAE,SAAS;SACf,CAAC;IACJ,CAAC;CACF;AAED,SAAS,OAAO,CAAC,OAAgB;IAC/B,MAAM,GAAG,GAA2C;QAClD,OAAO,EAAE,SAAS;QAClB,QAAQ,EAAE,UAAU;QACpB,GAAG,EAAE,KAAK;QACV,OAAO,EAAE,SAAS;QAClB,QAAQ,EAAE,UAAU;QACpB,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,UAAU;QACpB,IAAI,EAAE,MAAM;KACb,CAAC;IACF,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;IAC3B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,SAAS,CACjB,qCAAqC,OAAO,GAAG,EAC/C,SAAS,EACT,aAAa,CACd,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC9B,MAAM,GAAG,GAA4B;QACnC,OAAO,EAAE,SAAS;QAClB,QAAQ,EAAE,UAAU;QACpB,GAAG,EAAE,UAAU;QACf,GAAG,EAAE,KAAK;QACV,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,SAAS;QAClB,QAAQ,EAAE,UAAU;QACpB,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,UAAU;QACpB,IAAI,EAAE,MAAM;KACb,CAAC;IACF,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;AACpB,CAAC;AAED,SAAS,SAAS,CAAC,SAA2B;IAC5C,sEAAsE;IACtE,kEAAkE;IAClE,MAAM,OAAO,GAAG,SAAS,CAAC,OAA+B,CAAC;IAC1D,OAAO,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC;AAClC,CAAC"} |
@@ -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"} |
+17
-11
@@ -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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"} |
+5
-0
@@ -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"} |
+25
-4
@@ -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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"} |
+71
-7
@@ -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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"} |
+155
-22
@@ -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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"} |
+19
-2
@@ -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"} |
+1
-1
| { | ||
| "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", |
+10
-1
@@ -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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"} |
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
207228
69.03%67
31.37%2750
67.07%184
5.14%12
100%