@pafi-dev/core 0.9.1 → 0.9.2
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/abi/index.cjs +3 -3
- package/dist/abi/index.cjs.map +1 -1
- package/dist/abi/index.js +3 -3
- package/dist/{chunk-JH6XFHES.cjs → chunk-2EBPG75P.cjs} +32 -6
- package/dist/chunk-2EBPG75P.cjs.map +1 -0
- package/dist/{chunk-57KR35JW.cjs → chunk-C7VB6WTL.cjs} +636 -2
- package/dist/chunk-C7VB6WTL.cjs.map +1 -0
- package/dist/{chunk-JWZTY5UL.js → chunk-CWH4KOUW.js} +1 -635
- package/dist/chunk-CWH4KOUW.js.map +1 -0
- package/dist/{chunk-FHFZ2F34.js → chunk-LF5GIN5P.js} +636 -2
- package/dist/chunk-LF5GIN5P.js.map +1 -0
- package/dist/{chunk-G7NS4TS3.cjs → chunk-MIQA46E3.cjs} +2 -636
- package/dist/chunk-MIQA46E3.cjs.map +1 -0
- package/dist/{chunk-PWQWNHGI.js → chunk-RFKS5BHE.js} +29 -3
- package/dist/chunk-RFKS5BHE.js.map +1 -0
- package/dist/contract/index.cjs +7 -3
- package/dist/contract/index.cjs.map +1 -1
- package/dist/contract/index.d.cts +20 -1
- package/dist/contract/index.d.ts +20 -1
- package/dist/contract/index.js +6 -2
- package/dist/index.cjs +20 -13
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +7 -4
- package/dist/index.d.ts +7 -4
- package/dist/index.js +16 -9
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-57KR35JW.cjs.map +0 -1
- package/dist/chunk-FHFZ2F34.js.map +0 -1
- package/dist/chunk-G7NS4TS3.cjs.map +0 -1
- package/dist/chunk-JH6XFHES.cjs.map +0 -1
- package/dist/chunk-JWZTY5UL.js.map +0 -1
- package/dist/chunk-PWQWNHGI.js.map +0 -1
package/dist/abi/index.cjs
CHANGED
|
@@ -4,12 +4,12 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
|
|
7
|
+
var _chunkMIQA46E3cjs = require('../chunk-MIQA46E3.cjs');
|
|
7
8
|
|
|
8
|
-
var _chunkG7NS4TS3cjs = require('../chunk-G7NS4TS3.cjs');
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
|
-
var
|
|
12
|
+
var _chunkC7VB6WTLcjs = require('../chunk-C7VB6WTL.cjs');
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
var _chunkKRHGFUDIcjs = require('../chunk-KRHGFUDI.cjs');
|
|
@@ -24,5 +24,5 @@ require('../chunk-JEQ2X3Z6.cjs');
|
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
|
|
27
|
-
exports.erc20Abi =
|
|
27
|
+
exports.erc20Abi = _chunkMIQA46E3cjs.erc20Abi; exports.issuerRegistryAbi = _chunkC7VB6WTLcjs.issuerRegistryAbi; exports.mintFeeWrapperAbi = _chunkC7VB6WTLcjs.mintFeeWrapperAbi; exports.mintingOracleAbi = _chunkC7VB6WTLcjs.mintingOracleAbi; exports.permit2Abi = _chunkMIQA46E3cjs.permit2Abi; exports.pointTokenAbi = _chunkKRHGFUDIcjs.pointTokenAbi; exports.pointTokenFactoryAbi = _chunkMIQA46E3cjs.pointTokenFactoryAbi; exports.universalRouterAbi = _chunkMIQA46E3cjs.universalRouterAbi; exports.v4QuoterAbi = _chunkMIQA46E3cjs.v4QuoterAbi;
|
|
28
28
|
//# sourceMappingURL=index.cjs.map
|
package/dist/abi/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/phitran/Pacific-Finance/pafi-backend/pafi-sdk/packages/core/dist/abi/index.cjs"],"names":[],"mappings":"AAAA;AACE;AACA;AACA;AACA;AACA;
|
|
1
|
+
{"version":3,"sources":["/Users/phitran/Pacific-Finance/pafi-backend/pafi-sdk/packages/core/dist/abi/index.cjs"],"names":[],"mappings":"AAAA;AACE;AACA;AACA;AACA;AACA;AACF,yDAA8B;AAC9B;AACE;AACA;AACA;AACF,yDAA8B;AAC9B;AACE;AACF,yDAA8B;AAC9B,iCAA8B;AAC9B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,0hBAAC","file":"/Users/phitran/Pacific-Finance/pafi-backend/pafi-sdk/packages/core/dist/abi/index.cjs"}
|
package/dist/abi/index.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
erc20Abi,
|
|
3
|
-
mintFeeWrapperAbi,
|
|
4
3
|
permit2Abi,
|
|
5
4
|
pointTokenFactoryAbi,
|
|
6
5
|
universalRouterAbi,
|
|
7
6
|
v4QuoterAbi
|
|
8
|
-
} from "../chunk-
|
|
7
|
+
} from "../chunk-CWH4KOUW.js";
|
|
9
8
|
import {
|
|
10
9
|
issuerRegistryAbi,
|
|
10
|
+
mintFeeWrapperAbi,
|
|
11
11
|
mintingOracleAbi
|
|
12
|
-
} from "../chunk-
|
|
12
|
+
} from "../chunk-LF5GIN5P.js";
|
|
13
13
|
import {
|
|
14
14
|
pointTokenAbi
|
|
15
15
|
} from "../chunk-UCO5DXD6.js";
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
|
|
5
|
+
var _chunkC7VB6WTLcjs = require('./chunk-C7VB6WTL.cjs');
|
|
5
6
|
|
|
6
7
|
|
|
7
8
|
var _chunkKRHGFUDIcjs = require('./chunk-KRHGFUDI.cjs');
|
|
@@ -105,7 +106,7 @@ var issuerRegistryGetIssuerFlatAbi = GET_ISSUER_FLAT_ABI;
|
|
|
105
106
|
async function isActiveIssuer(client, registryAddress, issuer) {
|
|
106
107
|
return client.readContract({
|
|
107
108
|
address: registryAddress,
|
|
108
|
-
abi:
|
|
109
|
+
abi: _chunkC7VB6WTLcjs.issuerRegistryAbi,
|
|
109
110
|
functionName: "isActiveIssuer",
|
|
110
111
|
args: [issuer]
|
|
111
112
|
});
|
|
@@ -115,7 +116,7 @@ async function isActiveIssuer(client, registryAddress, issuer) {
|
|
|
115
116
|
async function verifyMintCap(client, oracleAddress, pointToken, issuer, amount) {
|
|
116
117
|
await client.readContract({
|
|
117
118
|
address: oracleAddress,
|
|
118
|
-
abi:
|
|
119
|
+
abi: _chunkC7VB6WTLcjs.mintingOracleAbi,
|
|
119
120
|
functionName: "verifyMintCap",
|
|
120
121
|
args: [pointToken, issuer, amount]
|
|
121
122
|
});
|
|
@@ -123,12 +124,37 @@ async function verifyMintCap(client, oracleAddress, pointToken, issuer, amount)
|
|
|
123
124
|
async function getPointTokenIssuer(client, oracleAddress, pointToken) {
|
|
124
125
|
return client.readContract({
|
|
125
126
|
address: oracleAddress,
|
|
126
|
-
abi:
|
|
127
|
+
abi: _chunkC7VB6WTLcjs.mintingOracleAbi,
|
|
127
128
|
functionName: "pointTokenToIssuer",
|
|
128
129
|
args: [pointToken]
|
|
129
130
|
});
|
|
130
131
|
}
|
|
131
132
|
|
|
133
|
+
// src/contract/mintFeeWrapper.ts
|
|
134
|
+
async function getMintFeeBps(client, wrapperAddress, pointToken) {
|
|
135
|
+
const fee = await client.readContract({
|
|
136
|
+
address: wrapperAddress,
|
|
137
|
+
abi: _chunkC7VB6WTLcjs.mintFeeWrapperAbi,
|
|
138
|
+
functionName: "totalFeeBps",
|
|
139
|
+
args: [pointToken]
|
|
140
|
+
});
|
|
141
|
+
return Number(fee);
|
|
142
|
+
}
|
|
143
|
+
async function getMintFeeRecipients(client, wrapperAddress, pointToken) {
|
|
144
|
+
const recipients = await client.readContract({
|
|
145
|
+
address: wrapperAddress,
|
|
146
|
+
abi: _chunkC7VB6WTLcjs.mintFeeWrapperAbi,
|
|
147
|
+
functionName: "getRecipients",
|
|
148
|
+
args: [pointToken]
|
|
149
|
+
});
|
|
150
|
+
return recipients.map((r) => ({
|
|
151
|
+
account: r.account,
|
|
152
|
+
basisPoints: Number(r.basisPoints)
|
|
153
|
+
}));
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
|
|
132
158
|
|
|
133
159
|
|
|
134
160
|
|
|
@@ -142,5 +168,5 @@ async function getPointTokenIssuer(client, oracleAddress, pointToken) {
|
|
|
142
168
|
|
|
143
169
|
|
|
144
170
|
|
|
145
|
-
exports.getMintRequestNonce = getMintRequestNonce; exports.getReceiverConsentNonce = getReceiverConsentNonce; exports.isMinter = isMinter; exports.getTokenName = getTokenName; exports.getIssuer = getIssuer; exports.getPointTokenBalance = getPointTokenBalance; exports.getBurnRequestNonce = getBurnRequestNonce; exports.getIssuer2 = getIssuer2; exports.issuerRegistryGetIssuerFlatAbi = issuerRegistryGetIssuerFlatAbi; exports.isActiveIssuer = isActiveIssuer; exports.verifyMintCap = verifyMintCap; exports.getPointTokenIssuer = getPointTokenIssuer;
|
|
146
|
-
//# sourceMappingURL=chunk-
|
|
171
|
+
exports.getMintRequestNonce = getMintRequestNonce; exports.getReceiverConsentNonce = getReceiverConsentNonce; exports.isMinter = isMinter; exports.getTokenName = getTokenName; exports.getIssuer = getIssuer; exports.getPointTokenBalance = getPointTokenBalance; exports.getBurnRequestNonce = getBurnRequestNonce; exports.getIssuer2 = getIssuer2; exports.issuerRegistryGetIssuerFlatAbi = issuerRegistryGetIssuerFlatAbi; exports.isActiveIssuer = isActiveIssuer; exports.verifyMintCap = verifyMintCap; exports.getPointTokenIssuer = getPointTokenIssuer; exports.getMintFeeBps = getMintFeeBps; exports.getMintFeeRecipients = getMintFeeRecipients;
|
|
172
|
+
//# sourceMappingURL=chunk-2EBPG75P.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/phitran/Pacific-Finance/pafi-backend/pafi-sdk/packages/core/dist/chunk-2EBPG75P.cjs","../src/contract/pointToken.ts","../src/contract/issuerRegistry.ts","../src/contract/mintingOracle.ts","../src/contract/mintFeeWrapper.ts"],"names":["getIssuer"],"mappings":"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","file":"/Users/phitran/Pacific-Finance/pafi-backend/pafi-sdk/packages/core/dist/chunk-2EBPG75P.cjs","sourcesContent":[null,"import type { Address, PublicClient } from \"viem\";\nimport { pointTokenAbi } from \"../abi/pointToken\";\n\nexport async function getMintRequestNonce(\n client: PublicClient,\n pointToken: Address,\n receiver: Address,\n): Promise<bigint> {\n return client.readContract({\n address: pointToken,\n abi: pointTokenAbi,\n functionName: \"mintRequestNonces\",\n args: [receiver],\n });\n}\n\n/**\n * Read the receiver consent nonce for EIP-712 `ReceiverConsent` signing.\n *\n * NOTE: `receiverConsentNonces` was removed from the deployed ABI in the\n * latest Foundry build. Pending SC confirmation on whether `nonces(owner)`\n * is the replacement or if a separate mapping will be re-added.\n * Using `nonces` as a fallback until confirmed.\n */\nexport async function getReceiverConsentNonce(\n client: PublicClient,\n pointToken: Address,\n receiver: Address,\n): Promise<bigint> {\n return client.readContract({\n address: pointToken,\n abi: pointTokenAbi,\n functionName: \"nonces\",\n args: [receiver],\n });\n}\n\nexport async function isMinter(\n client: PublicClient,\n pointToken: Address,\n account: Address,\n): Promise<boolean> {\n return client.readContract({\n address: pointToken,\n abi: pointTokenAbi,\n functionName: \"minters\",\n args: [account],\n });\n}\n\nexport async function getTokenName(\n client: PublicClient,\n pointToken: Address,\n): Promise<string> {\n return client.readContract({\n address: pointToken,\n abi: pointTokenAbi,\n functionName: \"name\",\n });\n}\n\nexport async function getIssuer(\n client: PublicClient,\n pointToken: Address,\n): Promise<Address> {\n return client.readContract({\n address: pointToken,\n abi: pointTokenAbi,\n functionName: \"issuer\",\n });\n}\n\n/**\n * Read the ERC-20 on-chain balance for `holder`. Returned in raw 18-decimal\n * base units. Use alongside the issuer's off-chain ledger balance to render\n * a combined \"total balance\" in the app UI.\n */\nexport async function getPointTokenBalance(\n client: PublicClient,\n pointToken: Address,\n holder: Address,\n): Promise<bigint> {\n return client.readContract({\n address: pointToken,\n abi: pointTokenAbi,\n functionName: \"balanceOf\",\n args: [holder],\n });\n}\n\nexport async function getBurnRequestNonce(\n client: PublicClient,\n pointToken: Address,\n from: Address,\n): Promise<bigint> {\n return client.readContract({\n address: pointToken,\n abi: pointTokenAbi,\n functionName: \"burnRequestNonces\",\n args: [from],\n });\n}\n","import type { Address, PublicClient } from \"viem\";\nimport { issuerRegistryAbi } from \"../abi/issuerRegistry\";\nimport type { Issuer } from \"../types\";\n\n/**\n * Flat-output ABI for `getIssuer` — workaround for a viem decoding bug\n * (≤ 2.48.x) where `outputs: [{ type: 'tuple', components: [...] }]` with\n * mixed static + dynamic fields throws `IntegerOutOfRangeError` because\n * viem expects an outer offset that the actual on-chain return doesn't\n * carry (Solidity inlines `returns (Struct)` at the wire level).\n *\n * Using flat outputs (one entry per struct field) matches the on-chain\n * encoding and decodes correctly. We rebuild the named struct from the\n * resulting array.\n */\nconst GET_ISSUER_FLAT_ABI = [\n {\n type: \"function\",\n name: \"getIssuer\",\n inputs: [{ name: \"issuer\", type: \"address\" }],\n outputs: [\n { name: \"issuerAddress\", type: \"address\" },\n { name: \"signerAddress\", type: \"address\" },\n { name: \"name\", type: \"string\" },\n { name: \"symbol\", type: \"string\" },\n { name: \"declaredTotalSupply\", type: \"uint256\" },\n { name: \"capBasisPoints\", type: \"uint16\" },\n { name: \"active\", type: \"bool\" },\n { name: \"pointToken\", type: \"address\" },\n { name: \"mintingOracle\", type: \"address\" },\n ],\n stateMutability: \"view\",\n },\n] as const;\n\nexport async function getIssuer(\n client: PublicClient,\n registryAddress: Address,\n issuer: Address,\n): Promise<Issuer> {\n const result = (await client.readContract({\n address: registryAddress,\n abi: GET_ISSUER_FLAT_ABI,\n functionName: \"getIssuer\",\n args: [issuer],\n })) as readonly [\n Address,\n Address,\n string,\n string,\n bigint,\n number,\n boolean,\n Address,\n Address,\n ];\n return {\n issuerAddress: result[0],\n signerAddress: result[1],\n name: result[2],\n symbol: result[3],\n declaredTotalSupply: result[4],\n capBasisPoints: result[5],\n active: result[6],\n pointToken: result[7],\n mintingOracle: result[8],\n } as Issuer;\n}\n\n/**\n * Re-export the flat ABI so callers using `client.readContract` directly\n * (e.g. inside batched `Promise.all`) can use it instead of the\n * struct-returning entry from `issuerRegistryAbi`.\n */\nexport const issuerRegistryGetIssuerFlatAbi = GET_ISSUER_FLAT_ABI;\n\nexport async function isActiveIssuer(\n client: PublicClient,\n registryAddress: Address,\n issuer: Address,\n): Promise<boolean> {\n return client.readContract({\n address: registryAddress,\n abi: issuerRegistryAbi,\n functionName: \"isActiveIssuer\",\n args: [issuer],\n });\n}\n","import type { Address, PublicClient } from \"viem\";\nimport { mintingOracleAbi } from \"../abi/mintingOracle\";\n\n/**\n * verifyMintCap signature changed in v1.6 (commit cc26f62) — now takes\n * `pointToken` as the first arg so the oracle can look up the per-token\n * cap. Reverts if the cap would be exceeded.\n */\nexport async function verifyMintCap(\n client: PublicClient,\n oracleAddress: Address,\n pointToken: Address,\n issuer: Address,\n amount: bigint,\n): Promise<void> {\n await client.readContract({\n address: oracleAddress,\n abi: mintingOracleAbi,\n functionName: \"verifyMintCap\",\n args: [pointToken, issuer, amount],\n });\n}\n\nexport async function getPointTokenIssuer(\n client: PublicClient,\n oracleAddress: Address,\n pointToken: Address,\n): Promise<Address> {\n return client.readContract({\n address: oracleAddress,\n abi: mintingOracleAbi,\n functionName: \"pointTokenToIssuer\",\n args: [pointToken],\n });\n}\n","import type { Address, PublicClient } from \"viem\";\nimport { mintFeeWrapperAbi } from \"../abi/mintFeeWrapper\";\n\n/**\n * Read the total fee in basis points (0–10000) for a specific PointToken\n * from the shared `MintFeeWrapper`. Each PointToken has its own recipient\n * list with per-recipient `basisPoints`; `totalFeeBps` is the sum.\n *\n * Returns 0 when no recipients are registered (mint goes through wrapper\n * with no fee deduction). Reverts only on RPC failure.\n */\nexport async function getMintFeeBps(\n client: PublicClient,\n wrapperAddress: Address,\n pointToken: Address,\n): Promise<number> {\n const fee = await client.readContract({\n address: wrapperAddress,\n abi: mintFeeWrapperAbi,\n functionName: \"totalFeeBps\",\n args: [pointToken],\n });\n return Number(fee);\n}\n\n/**\n * Read the recipient configuration for a PointToken — list of\n * `{ account, basisPoints }`. Useful for /config endpoints that want to\n * surface fee distribution to the frontend.\n */\nexport async function getMintFeeRecipients(\n client: PublicClient,\n wrapperAddress: Address,\n pointToken: Address,\n): Promise<readonly { account: Address; basisPoints: number }[]> {\n const recipients = await client.readContract({\n address: wrapperAddress,\n abi: mintFeeWrapperAbi,\n functionName: \"getRecipients\",\n args: [pointToken],\n });\n return recipients.map((r) => ({\n account: r.account,\n basisPoints: Number(r.basisPoints),\n }));\n}\n"]}
|