@antseed/payments 0.1.64 → 0.1.66
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/card-link.d.ts +53 -0
- package/dist/card-link.js +79 -0
- package/dist/card-link.js.map +1 -0
- package/dist/card-link.test.d.ts +1 -0
- package/dist/card-link.test.js +37 -0
- package/dist/card-link.test.js.map +1 -0
- package/dist/web/assets/{add-BtgX-vcQ.js → add-BH1B9awd.js} +1 -1
- package/dist/web/assets/{all-wallets-ewJCaZyj.js → all-wallets-_qCsGG_7.js} +1 -1
- package/dist/web/assets/{app-store-jMAZLhAG.js → app-store-CSHeWZ3A.js} +1 -1
- package/dist/web/assets/{apple-B7uWMizT.js → apple-CCLilR66.js} +1 -1
- package/dist/web/assets/{arrow-bottom-CsoZ5x9A.js → arrow-bottom-D0-7ZiKn.js} +1 -1
- package/dist/web/assets/{arrow-bottom-circle-DCUF2HMm.js → arrow-bottom-circle-CFPJIeWc.js} +1 -1
- package/dist/web/assets/{arrow-left-C39_5HZy.js → arrow-left-DRn_13kc.js} +1 -1
- package/dist/web/assets/{arrow-right-DicxdE5M.js → arrow-right-BxjR0Fdz.js} +1 -1
- package/dist/web/assets/{arrow-top-Bam-Qg_n.js → arrow-top-B1R2CCVC.js} +1 -1
- package/dist/web/assets/{bank-DMmRcls8.js → bank-DmFNa7fg.js} +1 -1
- package/dist/web/assets/{basic-ClImcF9g.js → basic-6ijgoaZK.js} +1 -1
- package/dist/web/assets/{browser-aDoQxfBP.js → browser-1OdBkPhc.js} +1 -1
- package/dist/web/assets/{card-C1wvr8Tx.js → card-wfMgFFlG.js} +1 -1
- package/dist/web/assets/{ccip-BEBptPzL.js → ccip-DmsKDk5g.js} +1 -1
- package/dist/web/assets/{checkmark-BmtchP4Z.js → checkmark-BqOb1kkD.js} +1 -1
- package/dist/web/assets/{checkmark-bold-CJdUO939.js → checkmark-bold-CAb3w3RB.js} +1 -1
- package/dist/web/assets/{chevron-bottom-CgDQglbP.js → chevron-bottom-D6DCr_2U.js} +1 -1
- package/dist/web/assets/{chevron-left-BqP0rwn-.js → chevron-left-caamkB4m.js} +1 -1
- package/dist/web/assets/{chevron-right-ChdhiBdJ.js → chevron-right-DXelL4W3.js} +1 -1
- package/dist/web/assets/{chevron-top-nZjQUqJZ.js → chevron-top-Dc-JhIzj.js} +1 -1
- package/dist/web/assets/{chrome-store-8TfBkW9o.js → chrome-store-DR0k3JNl.js} +1 -1
- package/dist/web/assets/{clock-8M03j42c.js → clock-CPjOiNbo.js} +1 -1
- package/dist/web/assets/{close-BBotubE7.js → close-4izpZwFK.js} +1 -1
- package/dist/web/assets/{coinPlaceholder-J6KldJq_.js → coinPlaceholder-CkDN0oDk.js} +1 -1
- package/dist/web/assets/{compass-Dx2TmKEZ.js → compass-Gpl2RFCE.js} +1 -1
- package/dist/web/assets/{copy-DFP02T_J.js → copy-DUb4XGrQ.js} +1 -1
- package/dist/web/assets/{core-DqipEyLk.js → core-BKieXrcZ.js} +3 -3
- package/dist/web/assets/{cursor-BvzEKjHy.js → cursor-Dy03Wa8Z.js} +1 -1
- package/dist/web/assets/{cursor-transparent-J9rknAua.js → cursor-transparent-1LQJUNws.js} +1 -1
- package/dist/web/assets/{desktop-DwJySZ8f.js → desktop-B36kSY-u.js} +1 -1
- package/dist/web/assets/{disconnect-BfKqZiyq.js → disconnect-D_zTMBJY.js} +1 -1
- package/dist/web/assets/{discord-CUzuH6u9.js → discord-B71kN4a1.js} +1 -1
- package/dist/web/assets/{etherscan-CzyQmxVP.js → etherscan-DtvDcBvB.js} +1 -1
- package/dist/web/assets/{exclamation-triangle-B0bzTgAZ.js → exclamation-triangle-DHW_ckao.js} +1 -1
- package/dist/web/assets/{extension-BU_7RKiG.js → extension-DSt0r6TA.js} +1 -1
- package/dist/web/assets/{external-link-BG25Qrfd.js → external-link-D23iici8.js} +1 -1
- package/dist/web/assets/{facebook-DZqwPoiF.js → facebook-BCgWsphY.js} +1 -1
- package/dist/web/assets/{farcaster-Fu_edMG_.js → farcaster-CPbNdR9n.js} +1 -1
- package/dist/web/assets/{filters-C2ygSE1E.js → filters-yx-fOS2Z.js} +1 -1
- package/dist/web/assets/{github-DJ78VsZ8.js → github-DzVFsDt0.js} +1 -1
- package/dist/web/assets/{google-D2VC6AgH.js → google-C22h6w2X.js} +1 -1
- package/dist/web/assets/{help-circle-tFpgMIXF.js → help-circle-XPrHFzCp.js} +1 -1
- package/dist/web/assets/{id-CVI3wOKR.js → id-CAbpbNXN.js} +1 -1
- package/dist/web/assets/{image-CGpugEHz.js → image-CAbHz6Kb.js} +1 -1
- package/dist/web/assets/{index-BODxxsQV.js → index-B0ZMzNt2.js} +64 -64
- package/dist/web/assets/{index-B_GGRymc.js → index-B6MdJmon.js} +1 -1
- package/dist/web/assets/{index-D8q_GDui.js → index-BmXDjBlF.js} +1 -1
- package/dist/web/assets/index-DIXB2x06.css +1 -0
- package/dist/web/assets/{index-DY_lGc5g.js → index-DxSd4wAG.js} +1 -1
- package/dist/web/assets/{index-B6gkJ3Ch.js → index-NIrQDrBv.js} +3 -3
- package/dist/web/assets/{index.es-Bvhxi7dX.js → index.es-PNSreUip.js} +4 -4
- package/dist/web/assets/{info-B_mVSM_7.js → info-B3ihq4Hg.js} +1 -1
- package/dist/web/assets/{info-circle-BUDHk5y1.js → info-circle-Bp0ShBNM.js} +1 -1
- package/dist/web/assets/{lightbulb-CPz6e13C.js → lightbulb-DtaU6Y6W.js} +1 -1
- package/dist/web/assets/{mail-vOlixMBq.js → mail-C6MVCJLL.js} +1 -1
- package/dist/web/assets/{metamask-sdk-Nzy2sijx.js → metamask-sdk-OhaOLAOz.js} +1 -1
- package/dist/web/assets/{mobile-B6HVvZdI.js → mobile-DQiiYLPv.js} +1 -1
- package/dist/web/assets/{more-CFmXQRj9.js → more-BvW5J2p2.js} +1 -1
- package/dist/web/assets/{network-placeholder-BhBguXBh.js → network-placeholder-CMNIjtjb.js} +1 -1
- package/dist/web/assets/{nftPlaceholder-TFEjmElw.js → nftPlaceholder-CQp0_R7b.js} +1 -1
- package/dist/web/assets/{off-DKEAFih0.js → off-75zyyvtQ.js} +1 -1
- package/dist/web/assets/{play-store-CH0Txutx.js → play-store-B0D2Ns-8.js} +1 -1
- package/dist/web/assets/{plus-CVXVcZm_.js → plus-Cuelf191.js} +1 -1
- package/dist/web/assets/{qr-code-B48ghPGc.js → qr-code-DfBYh374.js} +1 -1
- package/dist/web/assets/{recycle-horizontal-DuBz0-YR.js → recycle-horizontal-BE5c8JHw.js} +1 -1
- package/dist/web/assets/{refresh--6EytzUA.js → refresh-D6wU-zn0.js} +1 -1
- package/dist/web/assets/{reown-logo-DR1f4ysK.js → reown-logo-CT3EzHXg.js} +1 -1
- package/dist/web/assets/{search-_4aEwMp9.js → search-CiHOJIGp.js} +1 -1
- package/dist/web/assets/{secp256k1-B4pZ52El.js → secp256k1-DvtKSY4S.js} +1 -1
- package/dist/web/assets/{send-BrN77HCf.js → send-BeWYoxiX.js} +1 -1
- package/dist/web/assets/{swapHorizontal-CqBJwJ5n.js → swapHorizontal-BAyuyg8R.js} +1 -1
- package/dist/web/assets/{swapHorizontalBold-Bdr55X9E.js → swapHorizontalBold-DMrS7UJv.js} +1 -1
- package/dist/web/assets/{swapHorizontalMedium-BXsGw1Oi.js → swapHorizontalMedium-DlBgIjGf.js} +1 -1
- package/dist/web/assets/{swapHorizontalRoundedBold-DKzQoKnU.js → swapHorizontalRoundedBold-BfkNJ2ny.js} +1 -1
- package/dist/web/assets/{swapVertical-C6h37icA.js → swapVertical-CBIcUZrs.js} +1 -1
- package/dist/web/assets/{telegram-DCT09W9P.js → telegram-Cy2_xt_O.js} +1 -1
- package/dist/web/assets/{three-dots-D-ReG6gn.js → three-dots-vB7ta4_-.js} +1 -1
- package/dist/web/assets/{twitch-fjBn1W6I.js → twitch-7Y1eQA1h.js} +1 -1
- package/dist/web/assets/{twitterIcon-6ZzSMlak.js → twitterIcon-CKgNo9ld.js} +1 -1
- package/dist/web/assets/{verify-filled-v2n91dlN.js → verify-filled-BDPn51ow.js} +1 -1
- package/dist/web/assets/{verify-CxZfOVXR.js → verify-jlPSjsG4.js} +1 -1
- package/dist/web/assets/{w3m-modal-Dk4ISjeu.js → w3m-modal-EYPy50rE.js} +1 -1
- package/dist/web/assets/{wallet-placeholder-Cq95xqIn.js → wallet-placeholder-CdvIS4fz.js} +1 -1
- package/dist/web/assets/{wallet-BT80X6uh.js → wallet-w8EJv7QT.js} +1 -1
- package/dist/web/assets/{walletconnect-DDSGaTxR.js → walletconnect-YbsJ1wsK.js} +1 -1
- package/dist/web/assets/{warning-circle-DEaOrl28.js → warning-circle-CQxns8mJ.js} +1 -1
- package/dist/web/assets/{x-BHP-nRp4.js → x-B_di2Xiy.js} +1 -1
- package/dist/web/index.html +2 -2
- package/package.json +5 -3
- package/dist/web/assets/index-Cqin3jYz.css +0 -1
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Signed Antseed Pay funding links (card checkout), shared by the desktop
|
|
3
|
+
* (`payments:open-card-provider`) and the gateway console
|
|
4
|
+
* (`POST /workspaces/:id/wallet/card-link`) so both build the same bytes.
|
|
5
|
+
*
|
|
6
|
+
* The pay page checks a personal-sign signature over a canonical message
|
|
7
|
+
* naming the buyer address, currency and amount, proving the params came
|
|
8
|
+
* from that wallet. Pure and dependency-free: import it as
|
|
9
|
+
* `@antseed/payments/card-link` without loading the payments server.
|
|
10
|
+
*/
|
|
11
|
+
/** The pay page's integrations; the `provider` URL param opens exactly one. */
|
|
12
|
+
export type AntseedPayIntegration = 'crossmint' | 'stripe';
|
|
13
|
+
export declare const ANTSEED_PAY_INTEGRATIONS: readonly AntseedPayIntegration[];
|
|
14
|
+
export declare const DEFAULT_ANTSEED_PAY_URL = "https://antseed-pay.com/";
|
|
15
|
+
/**
|
|
16
|
+
* The signed message. Its header is a wire-format constant matching the pay
|
|
17
|
+
* page's `buildFundingMessage` byte for byte ("AntSeed Pay", capital S) — not
|
|
18
|
+
* display copy, so it must not follow product-name renames. The address is
|
|
19
|
+
* lowercased (verified against the reference sig the page accepts); the URL
|
|
20
|
+
* param stays checksummed. `amount` is '' when none was entered.
|
|
21
|
+
*/
|
|
22
|
+
export declare function antseedPayMessage(address: string, amount: string): string;
|
|
23
|
+
/**
|
|
24
|
+
* Expands a provider URL template (`{address}`, optional `{amount}`) and
|
|
25
|
+
* checks it: https only, except loopback so a locally run pay page can be
|
|
26
|
+
* tested. With no amount (''), query params still carrying the `{amount}`
|
|
27
|
+
* placeholder are dropped. Throws 'Card provider URL is invalid' / '... must
|
|
28
|
+
* be https'.
|
|
29
|
+
*/
|
|
30
|
+
export declare function resolveCardProviderUrl(template: string, address: string, amount: string): URL;
|
|
31
|
+
/**
|
|
32
|
+
* Adds the Antseed Pay params to `url` in place: address, currency, amount
|
|
33
|
+
* (when given), the wallet's signature over `antseedPayMessage`, and the
|
|
34
|
+
* integration to open (unsigned, UX only).
|
|
35
|
+
*/
|
|
36
|
+
export declare function signAntseedPayUrl(url: URL, input: {
|
|
37
|
+
wallet: {
|
|
38
|
+
address: string;
|
|
39
|
+
signMessage(message: string): Promise<string>;
|
|
40
|
+
};
|
|
41
|
+
amount: string;
|
|
42
|
+
integration: AntseedPayIntegration;
|
|
43
|
+
}): Promise<URL>;
|
|
44
|
+
/** The full signed link for a pay-page base URL (or template). */
|
|
45
|
+
export declare function buildAntseedPayLink(input: {
|
|
46
|
+
baseUrl: string;
|
|
47
|
+
wallet: {
|
|
48
|
+
address: string;
|
|
49
|
+
signMessage(message: string): Promise<string>;
|
|
50
|
+
};
|
|
51
|
+
amount: string;
|
|
52
|
+
integration: AntseedPayIntegration;
|
|
53
|
+
}): Promise<string>;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Signed Antseed Pay funding links (card checkout), shared by the desktop
|
|
3
|
+
* (`payments:open-card-provider`) and the gateway console
|
|
4
|
+
* (`POST /workspaces/:id/wallet/card-link`) so both build the same bytes.
|
|
5
|
+
*
|
|
6
|
+
* The pay page checks a personal-sign signature over a canonical message
|
|
7
|
+
* naming the buyer address, currency and amount, proving the params came
|
|
8
|
+
* from that wallet. Pure and dependency-free: import it as
|
|
9
|
+
* `@antseed/payments/card-link` without loading the payments server.
|
|
10
|
+
*/
|
|
11
|
+
export const ANTSEED_PAY_INTEGRATIONS = ['crossmint', 'stripe'];
|
|
12
|
+
export const DEFAULT_ANTSEED_PAY_URL = 'https://antseed-pay.com/';
|
|
13
|
+
const ANTSEED_PAY_CURRENCY = 'USD';
|
|
14
|
+
/**
|
|
15
|
+
* The signed message. Its header is a wire-format constant matching the pay
|
|
16
|
+
* page's `buildFundingMessage` byte for byte ("AntSeed Pay", capital S) — not
|
|
17
|
+
* display copy, so it must not follow product-name renames. The address is
|
|
18
|
+
* lowercased (verified against the reference sig the page accepts); the URL
|
|
19
|
+
* param stays checksummed. `amount` is '' when none was entered.
|
|
20
|
+
*/
|
|
21
|
+
export function antseedPayMessage(address, amount) {
|
|
22
|
+
return [
|
|
23
|
+
'AntSeed Pay',
|
|
24
|
+
`address: ${address.toLowerCase()}`,
|
|
25
|
+
`currency: ${ANTSEED_PAY_CURRENCY}`,
|
|
26
|
+
`amount: ${amount}`,
|
|
27
|
+
].join('\n');
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Expands a provider URL template (`{address}`, optional `{amount}`) and
|
|
31
|
+
* checks it: https only, except loopback so a locally run pay page can be
|
|
32
|
+
* tested. With no amount (''), query params still carrying the `{amount}`
|
|
33
|
+
* placeholder are dropped. Throws 'Card provider URL is invalid' / '... must
|
|
34
|
+
* be https'.
|
|
35
|
+
*/
|
|
36
|
+
export function resolveCardProviderUrl(template, address, amount) {
|
|
37
|
+
let expanded = template.split('{address}').join(address);
|
|
38
|
+
if (amount)
|
|
39
|
+
expanded = expanded.split('{amount}').join(amount);
|
|
40
|
+
let parsed;
|
|
41
|
+
try {
|
|
42
|
+
parsed = new URL(expanded);
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
throw new Error('Card provider URL is invalid');
|
|
46
|
+
}
|
|
47
|
+
const isLoopback = parsed.hostname === '127.0.0.1' || parsed.hostname === 'localhost';
|
|
48
|
+
if (parsed.protocol !== 'https:' && !(parsed.protocol === 'http:' && isLoopback)) {
|
|
49
|
+
throw new Error('Card provider URL must be https');
|
|
50
|
+
}
|
|
51
|
+
if (!amount) {
|
|
52
|
+
for (const [key, value] of [...parsed.searchParams.entries()]) {
|
|
53
|
+
if (value.includes('{amount}'))
|
|
54
|
+
parsed.searchParams.delete(key);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return parsed;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Adds the Antseed Pay params to `url` in place: address, currency, amount
|
|
61
|
+
* (when given), the wallet's signature over `antseedPayMessage`, and the
|
|
62
|
+
* integration to open (unsigned, UX only).
|
|
63
|
+
*/
|
|
64
|
+
export async function signAntseedPayUrl(url, input) {
|
|
65
|
+
const { wallet, amount, integration } = input;
|
|
66
|
+
url.searchParams.set('address', wallet.address);
|
|
67
|
+
url.searchParams.set('cur', ANTSEED_PAY_CURRENCY);
|
|
68
|
+
if (amount)
|
|
69
|
+
url.searchParams.set('amount', amount);
|
|
70
|
+
url.searchParams.set('sig', await wallet.signMessage(antseedPayMessage(wallet.address, amount)));
|
|
71
|
+
url.searchParams.set('provider', integration);
|
|
72
|
+
return url;
|
|
73
|
+
}
|
|
74
|
+
/** The full signed link for a pay-page base URL (or template). */
|
|
75
|
+
export async function buildAntseedPayLink(input) {
|
|
76
|
+
const url = resolveCardProviderUrl(input.baseUrl, input.wallet.address, input.amount);
|
|
77
|
+
return (await signAntseedPayUrl(url, input)).toString();
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=card-link.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"card-link.js","sourceRoot":"","sources":["../src/card-link.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { Wallet, verifyMessage } from 'ethers';
|
|
3
|
+
import { antseedPayMessage, buildAntseedPayLink, DEFAULT_ANTSEED_PAY_URL, resolveCardProviderUrl, signAntseedPayUrl, } from './card-link.js';
|
|
4
|
+
// Obvious fake key.
|
|
5
|
+
const WALLET = new Wallet(`0x${'11'.repeat(32)}`);
|
|
6
|
+
describe('card link', () => {
|
|
7
|
+
it('signs the pay page wire format', () => {
|
|
8
|
+
expect(antseedPayMessage('0xAbCdEf0000000000000000000000000000000001', '10.5'))
|
|
9
|
+
.toBe('AntSeed Pay\naddress: 0xabcdef0000000000000000000000000000000001\ncurrency: USD\namount: 10.5');
|
|
10
|
+
});
|
|
11
|
+
it('builds a link whose signature recovers to the wallet', async () => {
|
|
12
|
+
const url = new URL(await buildAntseedPayLink({ baseUrl: DEFAULT_ANTSEED_PAY_URL, wallet: WALLET, amount: '20', integration: 'stripe' }));
|
|
13
|
+
expect(url.origin).toBe('https://antseed-pay.com');
|
|
14
|
+
expect(url.searchParams.get('address')).toBe(WALLET.address);
|
|
15
|
+
expect(url.searchParams.get('cur')).toBe('USD');
|
|
16
|
+
expect(url.searchParams.get('amount')).toBe('20');
|
|
17
|
+
expect(url.searchParams.get('provider')).toBe('stripe');
|
|
18
|
+
expect(verifyMessage(antseedPayMessage(WALLET.address, '20'), url.searchParams.get('sig'))).toBe(WALLET.address);
|
|
19
|
+
});
|
|
20
|
+
it('expands templates and drops amount placeholders when no amount is given', () => {
|
|
21
|
+
expect(resolveCardProviderUrl('https://pay.example.test/?buyer={address}&amt={amount}', '0xabc', '5').toString())
|
|
22
|
+
.toBe('https://pay.example.test/?buyer=0xabc&amt=5');
|
|
23
|
+
expect(resolveCardProviderUrl('https://pay.example.test/?buyer={address}&amt={amount}', '0xabc', '').toString())
|
|
24
|
+
.toBe('https://pay.example.test/?buyer=0xabc');
|
|
25
|
+
});
|
|
26
|
+
it('signs an empty amount without an amount param', async () => {
|
|
27
|
+
const url = await signAntseedPayUrl(new URL('https://pay.example.test/'), { wallet: WALLET, amount: '', integration: 'crossmint' });
|
|
28
|
+
expect(url.searchParams.has('amount')).toBe(false);
|
|
29
|
+
expect(verifyMessage(antseedPayMessage(WALLET.address, ''), url.searchParams.get('sig'))).toBe(WALLET.address);
|
|
30
|
+
});
|
|
31
|
+
it('allows loopback http and refuses other plain http or bad URLs', () => {
|
|
32
|
+
expect(() => resolveCardProviderUrl('http://localhost:3120/', '0xabc', '1')).not.toThrow();
|
|
33
|
+
expect(() => resolveCardProviderUrl('http://pay.example.test/', '0xabc', '1')).toThrow('Card provider URL must be https');
|
|
34
|
+
expect(() => resolveCardProviderUrl('not a url', '0xabc', '1')).toThrow('Card provider URL is invalid');
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
//# sourceMappingURL=card-link.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"card-link.test.js","sourceRoot":"","sources":["../src/card-link.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{w as o}from"./core-
|
|
1
|
+
import{w as o}from"./core-BKieXrcZ.js";import"./index-B0ZMzNt2.js";import"./index.es-PNSreUip.js";import"./events-DQ172AOg.js";const e=o`<svg
|
|
2
2
|
width="14"
|
|
3
3
|
height="14"
|
|
4
4
|
viewBox="0 0 14 14"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{w as o}from"./core-
|
|
1
|
+
import{w as o}from"./core-BKieXrcZ.js";import"./index-B0ZMzNt2.js";import"./index.es-PNSreUip.js";import"./events-DQ172AOg.js";const r=o`<svg fill="none" viewBox="0 0 24 24">
|
|
2
2
|
<path
|
|
3
3
|
style="fill: var(--wui-color-accent-100);"
|
|
4
4
|
d="M10.2 6.6a3.6 3.6 0 1 1-7.2 0 3.6 3.6 0 0 1 7.2 0ZM21 6.6a3.6 3.6 0 1 1-7.2 0 3.6 3.6 0 0 1 7.2 0ZM10.2 17.4a3.6 3.6 0 1 1-7.2 0 3.6 3.6 0 0 1 7.2 0ZM21 17.4a3.6 3.6 0 1 1-7.2 0 3.6 3.6 0 0 1 7.2 0Z"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{w as t}from"./core-
|
|
1
|
+
import{w as t}from"./core-BKieXrcZ.js";import"./index-B0ZMzNt2.js";import"./index.es-PNSreUip.js";import"./events-DQ172AOg.js";const e=t`
|
|
2
2
|
<svg width="36" height="36">
|
|
3
3
|
<path
|
|
4
4
|
d="M28.724 0H7.271A7.269 7.269 0 0 0 0 7.272v21.46A7.268 7.268 0 0 0 7.271 36H28.73A7.272 7.272 0 0 0 36 28.728V7.272A7.275 7.275 0 0 0 28.724 0Z"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{w as i}from"./core-
|
|
1
|
+
import{w as i}from"./core-BKieXrcZ.js";import"./index-B0ZMzNt2.js";import"./index.es-PNSreUip.js";import"./events-DQ172AOg.js";const c=i`<svg fill="none" viewBox="0 0 40 40">
|
|
2
2
|
<g clip-path="url(#a)">
|
|
3
3
|
<g clip-path="url(#b)">
|
|
4
4
|
<circle cx="20" cy="19.89" r="20" fill="#000" />
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{w as o}from"./core-
|
|
1
|
+
import{w as o}from"./core-BKieXrcZ.js";import"./index-B0ZMzNt2.js";import"./index.es-PNSreUip.js";import"./events-DQ172AOg.js";const i=o`<svg fill="none" viewBox="0 0 14 15">
|
|
2
2
|
<path
|
|
3
3
|
fill="currentColor"
|
|
4
4
|
fill-rule="evenodd"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{w as C}from"./core-
|
|
1
|
+
import{w as C}from"./core-BKieXrcZ.js";import"./index-B0ZMzNt2.js";import"./index.es-PNSreUip.js";import"./events-DQ172AOg.js";const i=C`<svg
|
|
2
2
|
fill="none"
|
|
3
3
|
viewBox="0 0 21 20"
|
|
4
4
|
>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{w as o}from"./core-
|
|
1
|
+
import{w as o}from"./core-BKieXrcZ.js";import"./index-B0ZMzNt2.js";import"./index.es-PNSreUip.js";import"./events-DQ172AOg.js";const t=o`<svg fill="none" viewBox="0 0 14 15">
|
|
2
2
|
<path
|
|
3
3
|
fill="currentColor"
|
|
4
4
|
fill-rule="evenodd"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{w as o}from"./core-
|
|
1
|
+
import{w as o}from"./core-BKieXrcZ.js";import"./index-B0ZMzNt2.js";import"./index.es-PNSreUip.js";import"./events-DQ172AOg.js";const t=o`<svg fill="none" viewBox="0 0 14 15">
|
|
2
2
|
<path
|
|
3
3
|
fill="currentColor"
|
|
4
4
|
fill-rule="evenodd"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{w as o}from"./core-
|
|
1
|
+
import{w as o}from"./core-BKieXrcZ.js";import"./index-B0ZMzNt2.js";import"./index.es-PNSreUip.js";import"./events-DQ172AOg.js";const p=o`<svg fill="none" viewBox="0 0 14 15">
|
|
2
2
|
<path
|
|
3
3
|
fill="currentColor"
|
|
4
4
|
fill-rule="evenodd"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{w as o}from"./core-
|
|
1
|
+
import{w as o}from"./core-BKieXrcZ.js";import"./index-B0ZMzNt2.js";import"./index.es-PNSreUip.js";import"./events-DQ172AOg.js";const l=o`<svg
|
|
2
2
|
xmlns="http://www.w3.org/2000/svg"
|
|
3
3
|
width="12"
|
|
4
4
|
height="13"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{i as N,e as G,r as q,c as O,d as c,k as M,n as z,O as ee,q as k,E as te,R as U,z as Me,g as K,B as j,D as ft,t as Cn,W as pt,C as Zt,h as vi,T as ei,m as Xe,M as on,F as rn,w as Ne,x as yi,f as Rn}from"./core-
|
|
1
|
+
import{i as N,e as G,r as q,c as O,d as c,k as M,n as z,O as ee,q as k,E as te,R as U,z as Me,g as K,B as j,D as ft,t as Cn,W as pt,C as Zt,h as vi,T as ei,m as Xe,M as on,F as rn,w as Ne,x as yi,f as Rn}from"./core-BKieXrcZ.js";import{n as u,c as B,o as E,r as _,U as he,e as $n,f as _n,a as In}from"./index-NIrQDrBv.js";import{n as En}from"./index-B0ZMzNt2.js";import"./index.es-PNSreUip.js";import"./events-DQ172AOg.js";const Wn=N`
|
|
2
2
|
:host {
|
|
3
3
|
position: relative;
|
|
4
4
|
background-color: var(--wui-color-gray-glass-002);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{w as l}from"./core-
|
|
1
|
+
import{w as l}from"./core-BKieXrcZ.js";import"./index-B0ZMzNt2.js";import"./index.es-PNSreUip.js";import"./events-DQ172AOg.js";const c=l`<svg fill="none" viewBox="0 0 20 20">
|
|
2
2
|
<path
|
|
3
3
|
fill="currentColor"
|
|
4
4
|
fill-rule="evenodd"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{w as C}from"./core-
|
|
1
|
+
import{w as C}from"./core-BKieXrcZ.js";import"./index-B0ZMzNt2.js";import"./index.es-PNSreUip.js";import"./events-DQ172AOg.js";const i=C`<svg
|
|
2
2
|
xmlns="http://www.w3.org/2000/svg"
|
|
3
3
|
width="12"
|
|
4
4
|
height="13"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{B as p,g as m,s as w,d as k,i as b,l as L,a as O,c as E,b as x,e as R,H as y,f as M}from"./index-
|
|
1
|
+
import{B as p,g as m,s as w,d as k,i as b,l as L,a as O,c as E,b as x,e as R,H as y,f as M}from"./index-B0ZMzNt2.js";class S extends p{constructor({callbackSelector:r,cause:a,data:n,extraData:i,sender:f,urls:t}){var o;super(a.shortMessage||"An error occurred while fetching for an offchain result.",{cause:a,metaMessages:[...a.metaMessages||[],(o=a.metaMessages)!=null&&o.length?"":[],"Offchain Gateway Call:",t&&[" Gateway URL(s):",...t.map(d=>` ${m(d)}`)],` Sender: ${f}`,` Data: ${n}`,` Callback selector: ${r}`,` Extra data: ${i}`].flat(),name:"OffchainLookupError"})}}class $ extends p{constructor({result:r,url:a}){super("Offchain gateway response is malformed. Response data must be a hex value.",{metaMessages:[`Gateway URL: ${m(a)}`,`Response: ${w(r)}`],name:"OffchainLookupResponseMalformedError"})}}class q extends p{constructor({sender:r,to:a}){super("Reverted sender address does not match target contract address (`to`).",{metaMessages:[`Contract address: ${a}`,`OffchainLookup sender address: ${r}`],name:"OffchainLookupSenderMismatchError"})}}const A="0x556f1830",T={name:"OffchainLookup",type:"error",inputs:[{name:"sender",type:"address"},{name:"urls",type:"string[]"},{name:"callData",type:"bytes"},{name:"callbackFunction",type:"bytes4"},{name:"extraData",type:"bytes"}]};async function D(c,{blockNumber:r,blockTag:a,data:n,to:i}){const{args:f}=k({data:n,abi:[T]}),[t,o,d,l,s]=f,{ccipRead:e}=c,h=e&&typeof(e==null?void 0:e.request)=="function"?e.request:C;try{if(!b(i,t))throw new q({sender:t,to:i});const u=o.includes(L)?await O({data:d,ccipRequest:h}):await h({data:d,sender:t,urls:o}),{data:g}=await E(c,{blockNumber:r,blockTag:a,data:x([l,R([{type:"bytes"},{type:"bytes"}],[u,s])]),to:i});return g}catch(u){throw new S({callbackSelector:l,cause:u,data:n,extraData:s,sender:t,urls:o})}}async function C({data:c,sender:r,urls:a}){var i;let n=new Error("An unknown error occurred.");for(let f=0;f<a.length;f++){const t=a[f],o=t.includes("{data}")?"GET":"POST",d=o==="POST"?{data:c,sender:r}:void 0,l=o==="POST"?{"Content-Type":"application/json"}:{};try{const s=await fetch(t.replace("{sender}",r.toLowerCase()).replace("{data}",c),{body:JSON.stringify(d),headers:l,method:o});let e;if((i=s.headers.get("Content-Type"))!=null&&i.startsWith("application/json")?e=(await s.json()).data:e=await s.text(),!s.ok){n=new y({body:d,details:e!=null&&e.error?w(e.error):s.statusText,headers:s.headers,status:s.status,url:t});continue}if(!M(e)){n=new $({result:e,url:t});continue}return e}catch(s){n=new y({body:d,details:s.message,url:t})}}throw n}export{C as ccipRequest,D as offchainLookup,T as offchainLookupAbiItem,A as offchainLookupSignature};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{w as o}from"./core-
|
|
1
|
+
import{w as o}from"./core-BKieXrcZ.js";import"./index-B0ZMzNt2.js";import"./index.es-PNSreUip.js";import"./events-DQ172AOg.js";const l=o`<svg
|
|
2
2
|
width="28"
|
|
3
3
|
height="28"
|
|
4
4
|
viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{w as o}from"./core-
|
|
1
|
+
import{w as o}from"./core-BKieXrcZ.js";import"./index-B0ZMzNt2.js";import"./index.es-PNSreUip.js";import"./events-DQ172AOg.js";const t=o`<svg fill="none" viewBox="0 0 14 14">
|
|
2
2
|
<path
|
|
3
3
|
fill="currentColor"
|
|
4
4
|
fill-rule="evenodd"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{w as o}from"./core-
|
|
1
|
+
import{w as o}from"./core-BKieXrcZ.js";import"./index-B0ZMzNt2.js";import"./index.es-PNSreUip.js";import"./events-DQ172AOg.js";const i=o`<svg fill="none" viewBox="0 0 16 16">
|
|
2
2
|
<path
|
|
3
3
|
fill="currentColor"
|
|
4
4
|
fill-rule="evenodd"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{w as o}from"./core-
|
|
1
|
+
import{w as o}from"./core-BKieXrcZ.js";import"./index-B0ZMzNt2.js";import"./index.es-PNSreUip.js";import"./events-DQ172AOg.js";const t=o`<svg fill="none" viewBox="0 0 16 16">
|
|
2
2
|
<path
|
|
3
3
|
fill="currentColor"
|
|
4
4
|
fill-rule="evenodd"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{w as o}from"./core-
|
|
1
|
+
import{w as o}from"./core-BKieXrcZ.js";import"./index-B0ZMzNt2.js";import"./index.es-PNSreUip.js";import"./events-DQ172AOg.js";const t=o`<svg fill="none" viewBox="0 0 16 16">
|
|
2
2
|
<path
|
|
3
3
|
fill="currentColor"
|
|
4
4
|
fill-rule="evenodd"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{w as o}from"./core-
|
|
1
|
+
import{w as o}from"./core-BKieXrcZ.js";import"./index-B0ZMzNt2.js";import"./index.es-PNSreUip.js";import"./events-DQ172AOg.js";const p=o`<svg fill="none" viewBox="0 0 16 16">
|
|
2
2
|
<path
|
|
3
3
|
fill="currentColor"
|
|
4
4
|
fill-rule="evenodd"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{w as t}from"./core-
|
|
1
|
+
import{w as t}from"./core-BKieXrcZ.js";import"./index-B0ZMzNt2.js";import"./index.es-PNSreUip.js";import"./events-DQ172AOg.js";const e=t`<svg width="36" height="36" fill="none">
|
|
2
2
|
<path
|
|
3
3
|
fill="#fff"
|
|
4
4
|
fill-opacity=".05"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{w as o}from"./core-
|
|
1
|
+
import{w as o}from"./core-BKieXrcZ.js";import"./index-B0ZMzNt2.js";import"./index.es-PNSreUip.js";import"./events-DQ172AOg.js";const r=o`<svg width="14" height="14" viewBox="0 0 14 14" fill="none">
|
|
2
2
|
<path
|
|
3
3
|
fill-rule="evenodd"
|
|
4
4
|
clip-rule="evenodd"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{w as l}from"./core-
|
|
1
|
+
import{w as l}from"./core-BKieXrcZ.js";import"./index-B0ZMzNt2.js";import"./index.es-PNSreUip.js";import"./events-DQ172AOg.js";const t=l`<svg fill="none" viewBox="0 0 16 16">
|
|
2
2
|
<path
|
|
3
3
|
fill="currentColor"
|
|
4
4
|
fill-rule="evenodd"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{w as o}from"./core-
|
|
1
|
+
import{w as o}from"./core-BKieXrcZ.js";import"./index-B0ZMzNt2.js";import"./index.es-PNSreUip.js";import"./events-DQ172AOg.js";const t=o`<svg fill="none" viewBox="0 0 20 20">
|
|
2
2
|
<path
|
|
3
3
|
fill="currentColor"
|
|
4
4
|
fill-rule="evenodd"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{w as o}from"./core-
|
|
1
|
+
import{w as o}from"./core-BKieXrcZ.js";import"./index-B0ZMzNt2.js";import"./index.es-PNSreUip.js";import"./events-DQ172AOg.js";const a=o`<svg fill="none" viewBox="0 0 16 16">
|
|
2
2
|
<path
|
|
3
3
|
fill="currentColor"
|
|
4
4
|
fill-rule="evenodd"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{w as C}from"./core-
|
|
1
|
+
import{w as C}from"./core-BKieXrcZ.js";import"./index-B0ZMzNt2.js";import"./index.es-PNSreUip.js";import"./events-DQ172AOg.js";const t=C`<svg
|
|
2
2
|
xmlns="http://www.w3.org/2000/svg"
|
|
3
3
|
width="16"
|
|
4
4
|
height="16"
|