@pafi-dev/core 0.8.0 → 0.9.1

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.
Files changed (52) hide show
  1. package/dist/abi/index.cjs +4 -4
  2. package/dist/abi/index.d.cts +588 -107
  3. package/dist/abi/index.d.ts +588 -107
  4. package/dist/abi/index.js +3 -3
  5. package/dist/{chunk-JEWSN7Q3.cjs → chunk-57KR35JW.cjs} +474 -72
  6. package/dist/chunk-57KR35JW.cjs.map +1 -0
  7. package/dist/{chunk-B2NDSIAI.js → chunk-FHFZ2F34.js} +474 -72
  8. package/dist/chunk-FHFZ2F34.js.map +1 -0
  9. package/dist/{chunk-RFANYF24.cjs → chunk-G7NS4TS3.cjs} +615 -198
  10. package/dist/chunk-G7NS4TS3.cjs.map +1 -0
  11. package/dist/{chunk-YCY7MBSJ.cjs → chunk-JH6XFHES.cjs} +15 -15
  12. package/dist/chunk-JH6XFHES.cjs.map +1 -0
  13. package/dist/{chunk-ABNM6LMP.js → chunk-JWZTY5UL.js} +615 -198
  14. package/dist/chunk-JWZTY5UL.js.map +1 -0
  15. package/dist/chunk-KRHGFUDI.cjs +1155 -0
  16. package/dist/chunk-KRHGFUDI.cjs.map +1 -0
  17. package/dist/{chunk-Y4CFC4OC.js → chunk-PWQWNHGI.js} +5 -5
  18. package/dist/{chunk-Y4CFC4OC.js.map → chunk-PWQWNHGI.js.map} +1 -1
  19. package/dist/chunk-UCO5DXD6.js +1155 -0
  20. package/dist/chunk-UCO5DXD6.js.map +1 -0
  21. package/dist/{chunk-ACQHZWHP.cjs → chunk-UTG2UT54.cjs} +10 -8
  22. package/dist/chunk-UTG2UT54.cjs.map +1 -0
  23. package/dist/{chunk-BB5YW57R.js → chunk-XNVVZVK6.js} +9 -7
  24. package/dist/chunk-XNVVZVK6.js.map +1 -0
  25. package/dist/contract/index.cjs +4 -4
  26. package/dist/contract/index.d.cts +7 -2
  27. package/dist/contract/index.d.ts +7 -2
  28. package/dist/contract/index.js +3 -3
  29. package/dist/eip712/index.cjs +3 -3
  30. package/dist/eip712/index.d.cts +16 -5
  31. package/dist/eip712/index.d.ts +16 -5
  32. package/dist/eip712/index.js +2 -2
  33. package/dist/index.cjs +40 -42
  34. package/dist/index.cjs.map +1 -1
  35. package/dist/index.d.cts +51 -23
  36. package/dist/index.d.ts +51 -23
  37. package/dist/index.js +28 -30
  38. package/dist/index.js.map +1 -1
  39. package/dist/{types-BS4kpO4Z.d.ts → types-DWLZNgcw.d.cts} +37 -10
  40. package/dist/{types-BS4kpO4Z.d.cts → types-DWLZNgcw.d.ts} +37 -10
  41. package/package.json +1 -1
  42. package/dist/chunk-644KZUKR.cjs +0 -519
  43. package/dist/chunk-644KZUKR.cjs.map +0 -1
  44. package/dist/chunk-ABNM6LMP.js.map +0 -1
  45. package/dist/chunk-ACQHZWHP.cjs.map +0 -1
  46. package/dist/chunk-B2NDSIAI.js.map +0 -1
  47. package/dist/chunk-BB5YW57R.js.map +0 -1
  48. package/dist/chunk-CUVUSVWR.js +0 -519
  49. package/dist/chunk-CUVUSVWR.js.map +0 -1
  50. package/dist/chunk-JEWSN7Q3.cjs.map +0 -1
  51. package/dist/chunk-RFANYF24.cjs.map +0 -1
  52. package/dist/chunk-YCY7MBSJ.cjs.map +0 -1
package/dist/index.d.cts CHANGED
@@ -1,15 +1,30 @@
1
1
  import { Address, Hex, TypedDataDomain, PublicClient, WalletClient, TransactionReceipt, HttpTransport } from 'viem';
2
- import { P as PoolKey, C as ChainConfig, a as PafiSDKConfig, b as PointTokenDomainConfig, M as MintRequest, R as ReceiverConsent, E as EIP712Signature, S as SignatureVerification } from './types-BS4kpO4Z.cjs';
3
- export { B as BestQuote, c as BlackoutWindow, d as BurnRequest, I as Issuer, e as PathKey, Q as QuoteResult, f as Recipient, g as RedemptionDecision, h as RedemptionDenial, i as RedemptionDenialCode, j as RedemptionPolicy, k as RedemptionPolicySource, l as RedemptionPreview } from './types-BS4kpO4Z.cjs';
2
+ import { P as PoolKey, C as ChainConfig, a as PafiSDKConfig, b as PointTokenDomainConfig, M as MintRequest, R as ReceiverConsent, E as EIP712Signature, S as SignatureVerification } from './types-DWLZNgcw.cjs';
3
+ export { B as BestQuote, c as BlackoutWindow, d as BurnRequest, e as ExactOutputBestQuote, f as ExactOutputQuoteResult, I as Issuer, g as PathKey, Q as QuoteResult, h as Recipient, i as RedemptionDecision, j as RedemptionDenial, k as RedemptionDenialCode, l as RedemptionPolicy, m as RedemptionPolicySource, n as RedemptionPreview, T as TokenCap } from './types-DWLZNgcw.cjs';
4
4
  export { pointTokenAbi as POINT_TOKEN_V2_ABI, erc20Abi, issuerRegistryAbi, mintFeeWrapperAbi, mintingOracleAbi, permit2Abi, pointTokenAbi, pointTokenFactoryAbi, universalRouterAbi, v4QuoterAbi } from './abi/index.cjs';
5
5
  export { Eip712DomainMismatchError, assertDomainMatchesContract, buildBurnRequestTypedData, buildDomain, buildMintRequestTypedData, buildReceiverConsentTypedData, signBurnRequest, signMintRequest, signReceiverConsent, verifyBurnRequest, verifyMintRequest, verifyReceiverConsent } from './eip712/index.cjs';
6
6
  export { getBurnRequestNonce, getIssuer, getMintRequestNonce, getPointTokenBalance, getPointTokenIssuer, getPointTokenIssuerAddress, getReceiverConsentNonce, getTokenName, isActiveIssuer, isMinter, issuerRegistryGetIssuerFlatAbi, verifyMintCap } from './contract/index.cjs';
7
7
  import { LoginMessageParams } from './auth/index.cjs';
8
8
  export { BuildSponsorAuthParams, BuiltSponsorAuth, SPONSOR_AUTH_DOMAIN_ANCHOR_BASE_MAINNET, SPONSOR_AUTH_DOMAIN_NAME, SPONSOR_AUTH_TYPES, SponsorAuthPayload, SponsorAuthVerifyResult, VerifyLoginResult, buildAndSignSponsorAuth, buildSponsorAuthDomain, buildSponsorAuthTypedData, computeCallDataHash, createLoginMessage, generateSponsorAuthNonce, getSponsorAuthDomainAnchor, parseLoginMessage, signSponsorAuth, verifyLoginMessage, verifySponsorAuth } from './auth/index.cjs';
9
9
 
10
+ /**
11
+ * EIP-712 typed data for the v1.6 sig-gated mint path.
12
+ *
13
+ * Contract enforces:
14
+ * - msg.sender == receiver (the on-chain caller of `mint`)
15
+ * - nonce == mintRequestNonces[user] (per-user nonce stream)
16
+ *
17
+ * `user` is the off-chain spender (whose nonce advances), `receiver` is
18
+ * the on-chain mint recipient. For direct mints `user == receiver` (user
19
+ * calls PointToken.mint themselves). For wrapper-mediated mints `user ==
20
+ * end-user`, `receiver == wrapper address`.
21
+ */
10
22
  declare const mintRequestTypes: {
11
- readonly MintRequest: readonly [{
12
- readonly name: "to";
23
+ readonly MintForRequest: readonly [{
24
+ readonly name: "user";
25
+ readonly type: "address";
26
+ }, {
27
+ readonly name: "receiver";
13
28
  readonly type: "address";
14
29
  }, {
15
30
  readonly name: "amount";
@@ -1602,25 +1617,29 @@ declare const BATCH_EXECUTOR_ADDRESS_BASE_MAINNET: `0x${string}`;
1602
1617
  declare const BATCH_EXECUTOR_ADDRESS_BASE_SEPOLIA: `0x${string}`;
1603
1618
 
1604
1619
  /**
1605
- * Per-chain deployed contract addresses — v1.4 flow.
1620
+ * Per-chain deployed contract addresses — v1.6 flow.
1606
1621
  *
1607
- * ## Status (2026-04-22)
1622
+ * ## Status (2026-05-07)
1608
1623
  *
1609
- * Base mainnet (8453): **all real**. BatchExecutor now points at the
1610
- * canonical Coinbase Smart Wallet v2 contract which PAFI reuses as the
1611
- * EIP-7702 delegation target (no per-app deploy required — one
1612
- * contract, every issuer).
1624
+ * Base mainnet (8453): v1.6 redeploy. PAFIHook removed entirely fee on
1625
+ * mint now happens via `MintFeeWrapper` (single global instance, multi-PT).
1626
+ * `pafiHook` field kept as placeholder for back-compat with consumers that
1627
+ * still reference it; set to a deterministic dead address to make misuse
1628
+ * obvious.
1613
1629
  *
1614
1630
  * Base Sepolia (84532): entire row is placeholder — not in active use.
1615
1631
  *
1616
1632
  * ## What lives where
1617
1633
  *
1618
- * pointToken — live POINT instance (clone of PointToken impl)
1619
- * batchExecutor — EIP-7702 delegation target (Coinbase Smart Wallet v2)
1620
- * usdt — MockERC20 used by Uniswap pools
1621
- * issuerRegistry registry of all issuers on this chain
1622
- * mintingOracle per-issuer mint cap enforcer
1623
- * pafiHook Uniswap V4 hook enforcing the 10% PT→USDT fee
1634
+ * pointToken — live POINT clone of PointToken impl (per-issuer; this
1635
+ * is the gg56 clone; other issuers have their own and
1636
+ * should read from the factory at runtime)
1637
+ * batchExecutor EIP-7702 delegation target (Pimlico Simple7702Account)
1638
+ * usdt MockERC20 used by Uniswap pools
1639
+ * issuerRegistry registry of all issuers on this chain
1640
+ * mintingOracle — per-token mint cap enforcer (v1.6: per-token, not per-issuer)
1641
+ * mintFeeWrapper — v1.6 mint-time fee splitter (single global instance)
1642
+ * pafiHook — DEAD; v1.5 V4 swap fee removed in v1.6. Kept for ABI compat.
1624
1643
  *
1625
1644
  * PointTokenFactory + PointToken implementation addresses live in
1626
1645
  * separate exports below — they're only needed at provisioning /
@@ -1634,10 +1653,16 @@ interface ContractAddresses {
1634
1653
  issuerRegistry: Address;
1635
1654
  mintingOracle: Address;
1636
1655
  /**
1637
- * Uniswap V4 hook that enforces the 10% fee on PT→USDT swaps
1638
- * (USDT→PT is free). FE reads this to build `PoolKey.hooks` when
1639
- * constructing a swap; quoters + routers need it to resolve the
1640
- * correct pool.
1656
+ * v1.6 single-instance MintFeeWrapper that skims a fee on every
1657
+ * sig-gated mint and distributes across the registered recipient
1658
+ * list for the target PointToken. Issuers route mints through this
1659
+ * by passing `mintFeeWrapperAddress` to `prepareMint`.
1660
+ */
1661
+ mintFeeWrapper: Address;
1662
+ /**
1663
+ * @deprecated v1.5 PAFIHook (10% PT→USDT swap fee) was removed in
1664
+ * v1.6. Field kept as a dead placeholder so older consumers don't
1665
+ * crash on missing-property errors; do not use for new code.
1641
1666
  */
1642
1667
  pafiHook: Address;
1643
1668
  /** Chainlink ETH/USD price feed — used by FeeManager to convert gas cost to USDT. */
@@ -1993,8 +2018,11 @@ declare class PafiSDK {
1993
2018
  verifyingContract: `0x${string}`;
1994
2019
  };
1995
2020
  types: {
1996
- readonly MintRequest: readonly [{
1997
- readonly name: "to";
2021
+ readonly MintForRequest: readonly [{
2022
+ readonly name: "user";
2023
+ readonly type: "address";
2024
+ }, {
2025
+ readonly name: "receiver";
1998
2026
  readonly type: "address";
1999
2027
  }, {
2000
2028
  readonly name: "amount";
@@ -2007,7 +2035,7 @@ declare class PafiSDK {
2007
2035
  readonly type: "uint256";
2008
2036
  }];
2009
2037
  };
2010
- primaryType: "MintRequest";
2038
+ primaryType: "MintForRequest";
2011
2039
  message: MintRequest;
2012
2040
  }>;
2013
2041
  buildReceiverConsentTypedData(message: ReceiverConsent): Promise<{
package/dist/index.d.ts CHANGED
@@ -1,15 +1,30 @@
1
1
  import { Address, Hex, TypedDataDomain, PublicClient, WalletClient, TransactionReceipt, HttpTransport } from 'viem';
2
- import { P as PoolKey, C as ChainConfig, a as PafiSDKConfig, b as PointTokenDomainConfig, M as MintRequest, R as ReceiverConsent, E as EIP712Signature, S as SignatureVerification } from './types-BS4kpO4Z.js';
3
- export { B as BestQuote, c as BlackoutWindow, d as BurnRequest, I as Issuer, e as PathKey, Q as QuoteResult, f as Recipient, g as RedemptionDecision, h as RedemptionDenial, i as RedemptionDenialCode, j as RedemptionPolicy, k as RedemptionPolicySource, l as RedemptionPreview } from './types-BS4kpO4Z.js';
2
+ import { P as PoolKey, C as ChainConfig, a as PafiSDKConfig, b as PointTokenDomainConfig, M as MintRequest, R as ReceiverConsent, E as EIP712Signature, S as SignatureVerification } from './types-DWLZNgcw.js';
3
+ export { B as BestQuote, c as BlackoutWindow, d as BurnRequest, e as ExactOutputBestQuote, f as ExactOutputQuoteResult, I as Issuer, g as PathKey, Q as QuoteResult, h as Recipient, i as RedemptionDecision, j as RedemptionDenial, k as RedemptionDenialCode, l as RedemptionPolicy, m as RedemptionPolicySource, n as RedemptionPreview, T as TokenCap } from './types-DWLZNgcw.js';
4
4
  export { pointTokenAbi as POINT_TOKEN_V2_ABI, erc20Abi, issuerRegistryAbi, mintFeeWrapperAbi, mintingOracleAbi, permit2Abi, pointTokenAbi, pointTokenFactoryAbi, universalRouterAbi, v4QuoterAbi } from './abi/index.js';
5
5
  export { Eip712DomainMismatchError, assertDomainMatchesContract, buildBurnRequestTypedData, buildDomain, buildMintRequestTypedData, buildReceiverConsentTypedData, signBurnRequest, signMintRequest, signReceiverConsent, verifyBurnRequest, verifyMintRequest, verifyReceiverConsent } from './eip712/index.js';
6
6
  export { getBurnRequestNonce, getIssuer, getMintRequestNonce, getPointTokenBalance, getPointTokenIssuer, getPointTokenIssuerAddress, getReceiverConsentNonce, getTokenName, isActiveIssuer, isMinter, issuerRegistryGetIssuerFlatAbi, verifyMintCap } from './contract/index.js';
7
7
  import { LoginMessageParams } from './auth/index.js';
8
8
  export { BuildSponsorAuthParams, BuiltSponsorAuth, SPONSOR_AUTH_DOMAIN_ANCHOR_BASE_MAINNET, SPONSOR_AUTH_DOMAIN_NAME, SPONSOR_AUTH_TYPES, SponsorAuthPayload, SponsorAuthVerifyResult, VerifyLoginResult, buildAndSignSponsorAuth, buildSponsorAuthDomain, buildSponsorAuthTypedData, computeCallDataHash, createLoginMessage, generateSponsorAuthNonce, getSponsorAuthDomainAnchor, parseLoginMessage, signSponsorAuth, verifyLoginMessage, verifySponsorAuth } from './auth/index.js';
9
9
 
10
+ /**
11
+ * EIP-712 typed data for the v1.6 sig-gated mint path.
12
+ *
13
+ * Contract enforces:
14
+ * - msg.sender == receiver (the on-chain caller of `mint`)
15
+ * - nonce == mintRequestNonces[user] (per-user nonce stream)
16
+ *
17
+ * `user` is the off-chain spender (whose nonce advances), `receiver` is
18
+ * the on-chain mint recipient. For direct mints `user == receiver` (user
19
+ * calls PointToken.mint themselves). For wrapper-mediated mints `user ==
20
+ * end-user`, `receiver == wrapper address`.
21
+ */
10
22
  declare const mintRequestTypes: {
11
- readonly MintRequest: readonly [{
12
- readonly name: "to";
23
+ readonly MintForRequest: readonly [{
24
+ readonly name: "user";
25
+ readonly type: "address";
26
+ }, {
27
+ readonly name: "receiver";
13
28
  readonly type: "address";
14
29
  }, {
15
30
  readonly name: "amount";
@@ -1602,25 +1617,29 @@ declare const BATCH_EXECUTOR_ADDRESS_BASE_MAINNET: `0x${string}`;
1602
1617
  declare const BATCH_EXECUTOR_ADDRESS_BASE_SEPOLIA: `0x${string}`;
1603
1618
 
1604
1619
  /**
1605
- * Per-chain deployed contract addresses — v1.4 flow.
1620
+ * Per-chain deployed contract addresses — v1.6 flow.
1606
1621
  *
1607
- * ## Status (2026-04-22)
1622
+ * ## Status (2026-05-07)
1608
1623
  *
1609
- * Base mainnet (8453): **all real**. BatchExecutor now points at the
1610
- * canonical Coinbase Smart Wallet v2 contract which PAFI reuses as the
1611
- * EIP-7702 delegation target (no per-app deploy required — one
1612
- * contract, every issuer).
1624
+ * Base mainnet (8453): v1.6 redeploy. PAFIHook removed entirely fee on
1625
+ * mint now happens via `MintFeeWrapper` (single global instance, multi-PT).
1626
+ * `pafiHook` field kept as placeholder for back-compat with consumers that
1627
+ * still reference it; set to a deterministic dead address to make misuse
1628
+ * obvious.
1613
1629
  *
1614
1630
  * Base Sepolia (84532): entire row is placeholder — not in active use.
1615
1631
  *
1616
1632
  * ## What lives where
1617
1633
  *
1618
- * pointToken — live POINT instance (clone of PointToken impl)
1619
- * batchExecutor — EIP-7702 delegation target (Coinbase Smart Wallet v2)
1620
- * usdt — MockERC20 used by Uniswap pools
1621
- * issuerRegistry registry of all issuers on this chain
1622
- * mintingOracle per-issuer mint cap enforcer
1623
- * pafiHook Uniswap V4 hook enforcing the 10% PT→USDT fee
1634
+ * pointToken — live POINT clone of PointToken impl (per-issuer; this
1635
+ * is the gg56 clone; other issuers have their own and
1636
+ * should read from the factory at runtime)
1637
+ * batchExecutor EIP-7702 delegation target (Pimlico Simple7702Account)
1638
+ * usdt MockERC20 used by Uniswap pools
1639
+ * issuerRegistry registry of all issuers on this chain
1640
+ * mintingOracle — per-token mint cap enforcer (v1.6: per-token, not per-issuer)
1641
+ * mintFeeWrapper — v1.6 mint-time fee splitter (single global instance)
1642
+ * pafiHook — DEAD; v1.5 V4 swap fee removed in v1.6. Kept for ABI compat.
1624
1643
  *
1625
1644
  * PointTokenFactory + PointToken implementation addresses live in
1626
1645
  * separate exports below — they're only needed at provisioning /
@@ -1634,10 +1653,16 @@ interface ContractAddresses {
1634
1653
  issuerRegistry: Address;
1635
1654
  mintingOracle: Address;
1636
1655
  /**
1637
- * Uniswap V4 hook that enforces the 10% fee on PT→USDT swaps
1638
- * (USDT→PT is free). FE reads this to build `PoolKey.hooks` when
1639
- * constructing a swap; quoters + routers need it to resolve the
1640
- * correct pool.
1656
+ * v1.6 single-instance MintFeeWrapper that skims a fee on every
1657
+ * sig-gated mint and distributes across the registered recipient
1658
+ * list for the target PointToken. Issuers route mints through this
1659
+ * by passing `mintFeeWrapperAddress` to `prepareMint`.
1660
+ */
1661
+ mintFeeWrapper: Address;
1662
+ /**
1663
+ * @deprecated v1.5 PAFIHook (10% PT→USDT swap fee) was removed in
1664
+ * v1.6. Field kept as a dead placeholder so older consumers don't
1665
+ * crash on missing-property errors; do not use for new code.
1641
1666
  */
1642
1667
  pafiHook: Address;
1643
1668
  /** Chainlink ETH/USD price feed — used by FeeManager to convert gas cost to USDT. */
@@ -1993,8 +2018,11 @@ declare class PafiSDK {
1993
2018
  verifyingContract: `0x${string}`;
1994
2019
  };
1995
2020
  types: {
1996
- readonly MintRequest: readonly [{
1997
- readonly name: "to";
2021
+ readonly MintForRequest: readonly [{
2022
+ readonly name: "user";
2023
+ readonly type: "address";
2024
+ }, {
2025
+ readonly name: "receiver";
1998
2026
  readonly type: "address";
1999
2027
  }, {
2000
2028
  readonly name: "amount";
@@ -2007,7 +2035,7 @@ declare class PafiSDK {
2007
2035
  readonly type: "uint256";
2008
2036
  }];
2009
2037
  };
2010
- primaryType: "MintRequest";
2038
+ primaryType: "MintForRequest";
2011
2039
  message: MintRequest;
2012
2040
  }>;
2013
2041
  buildReceiverConsentTypedData(message: ReceiverConsent): Promise<{
package/dist/index.js CHANGED
@@ -5,7 +5,7 @@ import {
5
5
  pointTokenFactoryAbi,
6
6
  universalRouterAbi,
7
7
  v4QuoterAbi
8
- } from "./chunk-ABNM6LMP.js";
8
+ } from "./chunk-JWZTY5UL.js";
9
9
  import {
10
10
  SPONSOR_AUTH_DOMAIN_ANCHOR_BASE_MAINNET,
11
11
  SPONSOR_AUTH_DOMAIN_NAME,
@@ -35,11 +35,11 @@ import {
35
35
  isMinter,
36
36
  issuerRegistryGetIssuerFlatAbi,
37
37
  verifyMintCap
38
- } from "./chunk-Y4CFC4OC.js";
38
+ } from "./chunk-PWQWNHGI.js";
39
39
  import {
40
40
  issuerRegistryAbi,
41
41
  mintingOracleAbi
42
- } from "./chunk-B2NDSIAI.js";
42
+ } from "./chunk-FHFZ2F34.js";
43
43
  import {
44
44
  COMMON_POOLS,
45
45
  COMMON_TOKENS,
@@ -65,10 +65,10 @@ import {
65
65
  verifyBurnRequest,
66
66
  verifyMintRequest,
67
67
  verifyReceiverConsent
68
- } from "./chunk-BB5YW57R.js";
68
+ } from "./chunk-XNVVZVK6.js";
69
69
  import {
70
70
  pointTokenAbi
71
- } from "./chunk-CUVUSVWR.js";
71
+ } from "./chunk-UCO5DXD6.js";
72
72
  import "./chunk-DGUM43GV.js";
73
73
 
74
74
  // src/index.ts
@@ -799,31 +799,28 @@ function buildEip7702Authorization(params) {
799
799
  // src/contracts/real/addresses.ts
800
800
  var PLACEHOLDER_DEAD = (suffix) => `0x000000000000000000000000000000000000${suffix.toLowerCase().padStart(4, "0")}`;
801
801
  var CONTRACT_ADDRESSES = {
802
- // Base mainnet — SC-delivered (2026-04-21, 2026-04-22)
803
- // registry: IssuerRegistry 0xda2D3338CF70F462Ac175F5f2edfa45660CA4f31
804
- // factory: PointTokenFactory 0x36c0BAb2faBE45EfA6d13001143e43A266Af673B
805
- // oracle: MintingOracle 0xD85165939C700E51c8a45099316C6482634C2Ab9
806
- // tokenImpl: PointToken (impl) 0x2e6FB1B0C1A51abb83eC974890126a64eC02E995
807
- // mockUsdt: MockERC20 0x5d313485Ba59C3bb91e1A9C0C11782F0b83d5dcd
808
- // POINT: PointToken instance 0x7d25E7156E51F865D522fd3ef257a6B5DD41b97e
809
- // batchExecutor: Pimlico Simple7702 0xe6Cae83BdE06E4c305530e199D7217f42808555B
810
- // (v0.7.6 — switched from Coinbase SW v2
811
- // `0x7702cb...7176C`; CSW v2 uses SignatureWrapper
812
- // format that Pimlico's `pm_sponsorUserOperation`
813
- // cannot produce a working dummy sig for, leading
814
- // to AA23 `0x3c10b94e` reverts on the simulator.
815
- // Pimlico's `Simple7702Account` accepts standard
816
- // v0.7 ECDSA dummy and matches what the web FE +
817
- // permissionless `to7702SimpleSmartAccount` already
818
- // used in production.)
819
- // pafiHook: PAFIHook (V4, 10%) 0x870cAF9882d3160602AaC1769C2B264A2d8EC044
802
+ // Base mainnet — v1.6 redeploy (2026-05-07)
803
+ // registry: IssuerRegistry 0xAB1d1e117c41636f30bb10194Fe6B774B6Da9E01
804
+ // factory: PointTokenFactory 0xA08274458b43E7D6F4ff61ddFe8A9852c6531085
805
+ // oracle: MintingOracle 0x2f4cf8C5F8b41efC970c5b46a5d905CeA1f871a0
806
+ // tokenImpl: PointToken (impl) 0xc41c3F8A0380c7760Ee1209d6d19C4b81dE994e4
807
+ // mintFeeWrapper: MintFeeWrapper 0xD324EE2e3220B23d1b1BfbB85f5bC1EF2E917B93
808
+ // mockUsdt: MockERC20 0x3F7e71B150e97316Bb9f363A32c19CcD36ac2382
809
+ // batchExecutor: Pimlico Simple7702 0xe6Cae83BdE06E4c305530e199D7217f42808555B (unchanged from v1.5)
810
+ //
811
+ // pointToken: gg56's clone redeploy is pending. Field set to dead
812
+ // placeholder until SC team provides the new clone address — consumers
813
+ // that need a specific PointToken should read from PointTokenFactory or
814
+ // the issuer's env config (`POINT_TOKEN_ADDRESS`). Old v1.5 clone
815
+ // `0x7d25E7156E51F865D522fd3ef257a6B5DD41b97e` is no longer authoritative.
820
816
  8453: {
821
- pointToken: "0x7d25E7156E51F865D522fd3ef257a6B5DD41b97e",
817
+ pointToken: PLACEHOLDER_DEAD("dead"),
822
818
  batchExecutor: "0xe6Cae83BdE06E4c305530e199D7217f42808555B",
823
- usdt: "0x5d313485Ba59C3bb91e1A9C0C11782F0b83d5dcd",
824
- issuerRegistry: "0xda2D3338CF70F462Ac175F5f2edfa45660CA4f31",
825
- mintingOracle: "0xD85165939C700E51c8a45099316C6482634C2Ab9",
826
- pafiHook: "0x870cAF9882d3160602AaC1769C2B264A2d8EC044",
819
+ usdt: "0x3F7e71B150e97316Bb9f363A32c19CcD36ac2382",
820
+ issuerRegistry: "0xAB1d1e117c41636f30bb10194Fe6B774B6Da9E01",
821
+ mintingOracle: "0x2f4cf8C5F8b41efC970c5b46a5d905CeA1f871a0",
822
+ mintFeeWrapper: "0xD324EE2e3220B23d1b1BfbB85f5bC1EF2E917B93",
823
+ pafiHook: PLACEHOLDER_DEAD("dead"),
827
824
  chainlinkEthUsd: "0x71041dddad3595F9CEd3DcCFBe3D1F4b0a16Bb70",
828
825
  orderlyRelay: "0xDA082DAce1522c185aeB5A713FcA6fa6B6E99e7f",
829
826
  pafiFeeRecipient: "0xa3F71eadEd101513a0151007590020dCFD7C495e",
@@ -837,6 +834,7 @@ var CONTRACT_ADDRESSES = {
837
834
  usdt: PLACEHOLDER_DEAD("dead"),
838
835
  issuerRegistry: PLACEHOLDER_DEAD("dead"),
839
836
  mintingOracle: PLACEHOLDER_DEAD("dead"),
837
+ mintFeeWrapper: PLACEHOLDER_DEAD("dead"),
840
838
  pafiHook: PLACEHOLDER_DEAD("dead"),
841
839
  chainlinkEthUsd: PLACEHOLDER_DEAD("de02"),
842
840
  orderlyRelay: PLACEHOLDER_DEAD("de03"),
@@ -845,11 +843,11 @@ var CONTRACT_ADDRESSES = {
845
843
  }
846
844
  };
847
845
  var POINT_TOKEN_FACTORY_ADDRESSES = {
848
- 8453: "0x36c0BAb2faBE45EfA6d13001143e43A266Af673B",
846
+ 8453: "0xA08274458b43E7D6F4ff61ddFe8A9852c6531085",
849
847
  84532: PLACEHOLDER_DEAD("dead")
850
848
  };
851
849
  var POINT_TOKEN_IMPL_ADDRESSES = {
852
- 8453: "0x2e6FB1B0C1A51abb83eC974890126a64eC02E995",
850
+ 8453: "0xc41c3F8A0380c7760Ee1209d6d19C4b81dE994e4",
853
851
  84532: PLACEHOLDER_DEAD("dead")
854
852
  };
855
853
  function getContractAddresses(chainId) {