@pafi-dev/core 0.5.4 → 0.5.6

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.
@@ -0,0 +1,59 @@
1
+ import { Address, PublicClient } from 'viem';
2
+ import { P as PoolKey, d as PathKey, B as BestQuote, Q as QuoteResult } from '../types-b5_Tokjl.js';
3
+
4
+ /**
5
+ * Combine point-token-specific pools and common pools for a given chain.
6
+ * Point token pools are listed first so callers can prioritise them.
7
+ */
8
+ declare function combineRoutes(chainId: number, pointTokenAddress: Address): PoolKey[];
9
+ /**
10
+ * Build all possible swap paths from `tokenIn` to `tokenOut` using the given
11
+ * pools. Returns an array of PathKey[] routes (each up to `maxHops` hops).
12
+ *
13
+ * Supports both direct single-hop routes and multi-hop routes through
14
+ * intermediate tokens. Each pool is used at most once per path.
15
+ *
16
+ * @param pools - Available pools to route through
17
+ * @param tokenIn - Input token address
18
+ * @param tokenOut - Desired output token address
19
+ * @param maxHops - Maximum number of hops (default 3)
20
+ */
21
+ declare function buildAllPaths(pools: PoolKey[], tokenIn: Address, tokenOut: Address, maxHops?: number): PathKey[][];
22
+
23
+ /**
24
+ * Quote exact-input for a multi-hop path.
25
+ */
26
+ declare function quoteExactInput(client: PublicClient, quoterAddress: Address, exactCurrency: Address, path: PathKey[], exactAmount: bigint): Promise<QuoteResult>;
27
+ /**
28
+ * Quote exact-input for a single-hop swap, given an explicit PoolKey and direction.
29
+ */
30
+ declare function quoteExactInputSingle(client: PublicClient, quoterAddress: Address, poolKey: PoolKey, zeroForOne: boolean, exactAmount: bigint, hookData: `0x${string}`): Promise<{
31
+ amountOut: bigint;
32
+ gasEstimate: bigint;
33
+ }>;
34
+ /**
35
+ * Try multiple PathKey[] routes and return the best quote plus all results.
36
+ * Routes that fail (e.g. pool does not exist) are silently skipped.
37
+ *
38
+ * Uses viem multicall to batch all quotes into a single RPC call for speed.
39
+ */
40
+ declare function quoteBestRoute(client: PublicClient, quoterAddress: Address, exactCurrency: Address, routes: PathKey[][], exactAmount: bigint): Promise<BestQuote>;
41
+ /**
42
+ * Find and quote the best swap route from `tokenIn` to `tokenOut`.
43
+ *
44
+ * Combines the caller's `pools` with `COMMON_POOLS[chainId]`, builds all
45
+ * possible paths (up to `maxHops`), then quotes them all via a single
46
+ * multicall and returns the best result.
47
+ *
48
+ * @param client - viem PublicClient
49
+ * @param chainId - Chain ID (used to look up COMMON_POOLS and V4_QUOTER_ADDRESSES)
50
+ * @param tokenIn - Input token address
51
+ * @param tokenOut - Desired output token address
52
+ * @param exactAmount - Exact input amount
53
+ * @param pools - Additional pools to consider (e.g. point-token-specific)
54
+ * @param quoterAddress - Override the default V4 Quoter address for this chain
55
+ * @param maxHops - Maximum number of hops per path (default 3)
56
+ */
57
+ declare function findBestQuote(client: PublicClient, chainId: number, tokenIn: Address, tokenOut: Address, exactAmount: bigint, pools?: PoolKey[], quoterAddress?: Address, maxHops?: number): Promise<BestQuote>;
58
+
59
+ export { buildAllPaths, combineRoutes, findBestQuote, quoteBestRoute, quoteExactInput, quoteExactInputSingle };
@@ -0,0 +1,3 @@
1
+ export { B as BuildSwapWithGasDeductionParams, b as SETTLE_ALL, c as SWAP_EXACT_IN, S as SwapSimulationResult, T as TAKE_ALL, V as V4_SWAP, e as buildErc20ApprovalCalldata, f as buildPermit2ApprovalCalldata, g as buildSwapFromQuote, h as buildSwapWithGasDeduction, i as buildUniversalRouterExecuteArgs, j as buildV4SwapInput, k as checkAllowance, s as simulateSwap } from '../index-BEx-Q1bW.cjs';
2
+ import 'viem';
3
+ import '../types-b5_Tokjl.cjs';
@@ -0,0 +1,3 @@
1
+ export { B as BuildSwapWithGasDeductionParams, b as SETTLE_ALL, c as SWAP_EXACT_IN, S as SwapSimulationResult, T as TAKE_ALL, V as V4_SWAP, e as buildErc20ApprovalCalldata, f as buildPermit2ApprovalCalldata, g as buildSwapFromQuote, h as buildSwapWithGasDeduction, i as buildUniversalRouterExecuteArgs, j as buildV4SwapInput, k as checkAllowance, s as simulateSwap } from '../index-r4xCdQO7.js';
2
+ import 'viem';
3
+ import '../types-b5_Tokjl.js';
@@ -0,0 +1,89 @@
1
+ import { Address, Hex, WalletClient, PublicClient } from 'viem';
2
+
3
+ /** MintRequest(address to,uint256 amount,uint256 nonce,uint256 deadline) */
4
+ interface MintRequest {
5
+ to: Address;
6
+ amount: bigint;
7
+ nonce: bigint;
8
+ deadline: bigint;
9
+ }
10
+ /** BurnRequest(address from,uint256 amount,uint256 nonce,uint256 deadline) */
11
+ interface BurnRequest {
12
+ from: Address;
13
+ amount: bigint;
14
+ nonce: bigint;
15
+ deadline: bigint;
16
+ }
17
+ /** ReceiverConsent(address onBehalfOf,address originalReceiver,uint256 amount,uint256 nonce,uint256 deadline,bytes extData) */
18
+ interface ReceiverConsent {
19
+ onBehalfOf: Address;
20
+ originalReceiver: Address;
21
+ amount: bigint;
22
+ nonce: bigint;
23
+ deadline: bigint;
24
+ extData: Hex;
25
+ }
26
+ interface EIP712Signature {
27
+ v: number;
28
+ r: Hex;
29
+ s: Hex;
30
+ serialized: Hex;
31
+ }
32
+ interface PointTokenDomainConfig {
33
+ name: string;
34
+ verifyingContract: Address;
35
+ chainId: number;
36
+ }
37
+ interface SignatureVerification {
38
+ isValid: boolean;
39
+ recoveredAddress: Address;
40
+ }
41
+ /** Auto-generated from Solidity struct — do not edit */
42
+ interface PathKey {
43
+ intermediateCurrency: Address;
44
+ fee: number;
45
+ tickSpacing: number;
46
+ hooks: Address;
47
+ hookData: Hex;
48
+ }
49
+ /** Auto-generated from Solidity struct — do not edit */
50
+ interface Issuer {
51
+ issuerAddress: Address;
52
+ signerAddress: Address;
53
+ name: string;
54
+ symbol: string;
55
+ declaredTotalSupply: bigint;
56
+ capBasisPoints: number;
57
+ active: boolean;
58
+ pointToken: Address;
59
+ mintingOracle: Address;
60
+ }
61
+ /** Auto-generated from Solidity struct — do not edit */
62
+ interface PoolKey {
63
+ currency0: Address;
64
+ currency1: Address;
65
+ fee: number;
66
+ tickSpacing: number;
67
+ hooks: Address;
68
+ }
69
+ interface ChainConfig {
70
+ name: string;
71
+ }
72
+ interface QuoteResult {
73
+ amountOut: bigint;
74
+ gasEstimate: bigint;
75
+ path: PathKey[];
76
+ }
77
+ interface BestQuote {
78
+ bestRoute: QuoteResult;
79
+ allRoutes: QuoteResult[];
80
+ }
81
+ interface PafiSDKConfig {
82
+ pointTokenAddress?: Address;
83
+ signer?: WalletClient;
84
+ provider?: PublicClient;
85
+ rpcUrl?: string;
86
+ chainId?: number;
87
+ }
88
+
89
+ export type { BestQuote as B, ChainConfig as C, EIP712Signature as E, Issuer as I, MintRequest as M, PoolKey as P, QuoteResult as Q, ReceiverConsent as R, SignatureVerification as S, PafiSDKConfig as a, PointTokenDomainConfig as b, BurnRequest as c, PathKey as d };
@@ -0,0 +1,89 @@
1
+ import { Address, Hex, WalletClient, PublicClient } from 'viem';
2
+
3
+ /** MintRequest(address to,uint256 amount,uint256 nonce,uint256 deadline) */
4
+ interface MintRequest {
5
+ to: Address;
6
+ amount: bigint;
7
+ nonce: bigint;
8
+ deadline: bigint;
9
+ }
10
+ /** BurnRequest(address from,uint256 amount,uint256 nonce,uint256 deadline) */
11
+ interface BurnRequest {
12
+ from: Address;
13
+ amount: bigint;
14
+ nonce: bigint;
15
+ deadline: bigint;
16
+ }
17
+ /** ReceiverConsent(address onBehalfOf,address originalReceiver,uint256 amount,uint256 nonce,uint256 deadline,bytes extData) */
18
+ interface ReceiverConsent {
19
+ onBehalfOf: Address;
20
+ originalReceiver: Address;
21
+ amount: bigint;
22
+ nonce: bigint;
23
+ deadline: bigint;
24
+ extData: Hex;
25
+ }
26
+ interface EIP712Signature {
27
+ v: number;
28
+ r: Hex;
29
+ s: Hex;
30
+ serialized: Hex;
31
+ }
32
+ interface PointTokenDomainConfig {
33
+ name: string;
34
+ verifyingContract: Address;
35
+ chainId: number;
36
+ }
37
+ interface SignatureVerification {
38
+ isValid: boolean;
39
+ recoveredAddress: Address;
40
+ }
41
+ /** Auto-generated from Solidity struct — do not edit */
42
+ interface PathKey {
43
+ intermediateCurrency: Address;
44
+ fee: number;
45
+ tickSpacing: number;
46
+ hooks: Address;
47
+ hookData: Hex;
48
+ }
49
+ /** Auto-generated from Solidity struct — do not edit */
50
+ interface Issuer {
51
+ issuerAddress: Address;
52
+ signerAddress: Address;
53
+ name: string;
54
+ symbol: string;
55
+ declaredTotalSupply: bigint;
56
+ capBasisPoints: number;
57
+ active: boolean;
58
+ pointToken: Address;
59
+ mintingOracle: Address;
60
+ }
61
+ /** Auto-generated from Solidity struct — do not edit */
62
+ interface PoolKey {
63
+ currency0: Address;
64
+ currency1: Address;
65
+ fee: number;
66
+ tickSpacing: number;
67
+ hooks: Address;
68
+ }
69
+ interface ChainConfig {
70
+ name: string;
71
+ }
72
+ interface QuoteResult {
73
+ amountOut: bigint;
74
+ gasEstimate: bigint;
75
+ path: PathKey[];
76
+ }
77
+ interface BestQuote {
78
+ bestRoute: QuoteResult;
79
+ allRoutes: QuoteResult[];
80
+ }
81
+ interface PafiSDKConfig {
82
+ pointTokenAddress?: Address;
83
+ signer?: WalletClient;
84
+ provider?: PublicClient;
85
+ rpcUrl?: string;
86
+ chainId?: number;
87
+ }
88
+
89
+ export type { BestQuote as B, ChainConfig as C, EIP712Signature as E, Issuer as I, MintRequest as M, PoolKey as P, QuoteResult as Q, ReceiverConsent as R, SignatureVerification as S, PafiSDKConfig as a, PointTokenDomainConfig as b, BurnRequest as c, PathKey as d };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pafi-dev/core",
3
- "version": "0.5.4",
3
+ "version": "0.5.6",
4
4
  "description": "EIP-712 signing, contract interaction, and Relay calldata for the PAFI point token system",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -1,125 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
-
3
-
4
-
5
- var _chunkS2XRFFP3cjs = require('./chunk-S2XRFFP3.cjs');
6
-
7
- // src/contract/pointToken.ts
8
- async function getMintRequestNonce(client, pointToken, receiver) {
9
- return client.readContract({
10
- address: pointToken,
11
- abi: _chunkS2XRFFP3cjs.pointTokenAbi,
12
- functionName: "mintRequestNonces",
13
- args: [receiver]
14
- });
15
- }
16
- async function getReceiverConsentNonce(client, pointToken, receiver) {
17
- return client.readContract({
18
- address: pointToken,
19
- abi: _chunkS2XRFFP3cjs.pointTokenAbi,
20
- functionName: "receiverConsentNonces",
21
- args: [receiver]
22
- });
23
- }
24
- async function isMinter(client, pointToken, account) {
25
- return client.readContract({
26
- address: pointToken,
27
- abi: _chunkS2XRFFP3cjs.pointTokenAbi,
28
- functionName: "minters",
29
- args: [account]
30
- });
31
- }
32
- async function getTokenName(client, pointToken) {
33
- return client.readContract({
34
- address: pointToken,
35
- abi: _chunkS2XRFFP3cjs.pointTokenAbi,
36
- functionName: "name"
37
- });
38
- }
39
- async function getIssuer(client, pointToken) {
40
- return client.readContract({
41
- address: pointToken,
42
- abi: _chunkS2XRFFP3cjs.pointTokenAbi,
43
- functionName: "issuer"
44
- });
45
- }
46
- async function getPointTokenBalance(client, pointToken, holder) {
47
- return client.readContract({
48
- address: pointToken,
49
- abi: _chunkS2XRFFP3cjs.pointTokenAbi,
50
- functionName: "balanceOf",
51
- args: [holder]
52
- });
53
- }
54
-
55
- // src/contract/issuerRegistry.ts
56
- async function getIssuer2(client, registryAddress, issuer) {
57
- const result = await client.readContract({
58
- address: registryAddress,
59
- abi: _chunkS2XRFFP3cjs.issuerRegistryAbi,
60
- functionName: "getIssuer",
61
- args: [issuer]
62
- });
63
- const [
64
- issuerAddress,
65
- signerAddress,
66
- name,
67
- symbol,
68
- declaredTotalSupply,
69
- capBasisPoints,
70
- active,
71
- pointToken,
72
- mintingOracle
73
- ] = result;
74
- return {
75
- issuerAddress,
76
- signerAddress,
77
- name,
78
- symbol,
79
- declaredTotalSupply,
80
- capBasisPoints,
81
- active,
82
- pointToken,
83
- mintingOracle
84
- };
85
- }
86
- async function isActiveIssuer(client, registryAddress, issuer) {
87
- return client.readContract({
88
- address: registryAddress,
89
- abi: _chunkS2XRFFP3cjs.issuerRegistryAbi,
90
- functionName: "isActiveIssuer",
91
- args: [issuer]
92
- });
93
- }
94
-
95
- // src/contract/mintingOracle.ts
96
- async function verifyMintCap(client, oracleAddress, issuer, amount) {
97
- await client.readContract({
98
- address: oracleAddress,
99
- abi: _chunkS2XRFFP3cjs.mintingOracleAbi,
100
- functionName: "verifyMintCap",
101
- args: [issuer, amount]
102
- });
103
- }
104
- async function getPointTokenIssuer(client, oracleAddress, pointToken) {
105
- return client.readContract({
106
- address: oracleAddress,
107
- abi: _chunkS2XRFFP3cjs.mintingOracleAbi,
108
- functionName: "pointTokenToIssuer",
109
- args: [pointToken]
110
- });
111
- }
112
-
113
-
114
-
115
-
116
-
117
-
118
-
119
-
120
-
121
-
122
-
123
-
124
- exports.getMintRequestNonce = getMintRequestNonce; exports.getReceiverConsentNonce = getReceiverConsentNonce; exports.isMinter = isMinter; exports.getTokenName = getTokenName; exports.getIssuer = getIssuer; exports.getPointTokenBalance = getPointTokenBalance; exports.getIssuer2 = getIssuer2; exports.isActiveIssuer = isActiveIssuer; exports.verifyMintCap = verifyMintCap; exports.getPointTokenIssuer = getPointTokenIssuer;
125
- //# sourceMappingURL=chunk-G6IUSI5S.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/Users/phitran/Pacific-Finance/pafi-backend/pafi-sdk/packages/core/dist/chunk-G6IUSI5S.cjs","../src/contract/pointToken.ts","../src/contract/issuerRegistry.ts","../src/contract/mintingOracle.ts"],"names":["getIssuer"],"mappings":"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","file":"/Users/phitran/Pacific-Finance/pafi-backend/pafi-sdk/packages/core/dist/chunk-G6IUSI5S.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\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: \"receiverConsentNonces\",\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\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: issuerRegistryAbi,\n functionName: \"getIssuer\",\n args: [issuer],\n });\n\n const [\n issuerAddress,\n signerAddress,\n name,\n symbol,\n declaredTotalSupply,\n capBasisPoints,\n active,\n pointToken,\n mintingOracle,\n ] = result;\n\n return {\n issuerAddress,\n signerAddress,\n name,\n symbol,\n declaredTotalSupply,\n capBasisPoints,\n active,\n pointToken,\n mintingOracle,\n };\n}\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\nexport async function verifyMintCap(\n client: PublicClient,\n oracleAddress: 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: [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"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/contract/pointToken.ts","../src/contract/issuerRegistry.ts","../src/contract/mintingOracle.ts"],"sourcesContent":["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\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: \"receiverConsentNonces\",\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\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: issuerRegistryAbi,\n functionName: \"getIssuer\",\n args: [issuer],\n });\n\n const [\n issuerAddress,\n signerAddress,\n name,\n symbol,\n declaredTotalSupply,\n capBasisPoints,\n active,\n pointToken,\n mintingOracle,\n ] = result;\n\n return {\n issuerAddress,\n signerAddress,\n name,\n symbol,\n declaredTotalSupply,\n capBasisPoints,\n active,\n pointToken,\n mintingOracle,\n };\n}\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\nexport async function verifyMintCap(\n client: PublicClient,\n oracleAddress: 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: [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"],"mappings":";;;;;;;AAGA,eAAsB,oBACpB,QACA,YACA,UACiB;AACjB,SAAO,OAAO,aAAa;AAAA,IACzB,SAAS;AAAA,IACT,KAAK;AAAA,IACL,cAAc;AAAA,IACd,MAAM,CAAC,QAAQ;AAAA,EACjB,CAAC;AACH;AAEA,eAAsB,wBACpB,QACA,YACA,UACiB;AACjB,SAAO,OAAO,aAAa;AAAA,IACzB,SAAS;AAAA,IACT,KAAK;AAAA,IACL,cAAc;AAAA,IACd,MAAM,CAAC,QAAQ;AAAA,EACjB,CAAC;AACH;AAEA,eAAsB,SACpB,QACA,YACA,SACkB;AAClB,SAAO,OAAO,aAAa;AAAA,IACzB,SAAS;AAAA,IACT,KAAK;AAAA,IACL,cAAc;AAAA,IACd,MAAM,CAAC,OAAO;AAAA,EAChB,CAAC;AACH;AAEA,eAAsB,aACpB,QACA,YACiB;AACjB,SAAO,OAAO,aAAa;AAAA,IACzB,SAAS;AAAA,IACT,KAAK;AAAA,IACL,cAAc;AAAA,EAChB,CAAC;AACH;AAEA,eAAsB,UACpB,QACA,YACkB;AAClB,SAAO,OAAO,aAAa;AAAA,IACzB,SAAS;AAAA,IACT,KAAK;AAAA,IACL,cAAc;AAAA,EAChB,CAAC;AACH;AAOA,eAAsB,qBACpB,QACA,YACA,QACiB;AACjB,SAAO,OAAO,aAAa;AAAA,IACzB,SAAS;AAAA,IACT,KAAK;AAAA,IACL,cAAc;AAAA,IACd,MAAM,CAAC,MAAM;AAAA,EACf,CAAC;AACH;;;AC5EA,eAAsBA,WACpB,QACA,iBACA,QACiB;AACjB,QAAM,SAAS,MAAM,OAAO,aAAa;AAAA,IACvC,SAAS;AAAA,IACT,KAAK;AAAA,IACL,cAAc;AAAA,IACd,MAAM,CAAC,MAAM;AAAA,EACf,CAAC;AAED,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AAEJ,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,eAAsB,eACpB,QACA,iBACA,QACkB;AAClB,SAAO,OAAO,aAAa;AAAA,IACzB,SAAS;AAAA,IACT,KAAK;AAAA,IACL,cAAc;AAAA,IACd,MAAM,CAAC,MAAM;AAAA,EACf,CAAC;AACH;;;ACjDA,eAAsB,cACpB,QACA,eACA,QACA,QACe;AACf,QAAM,OAAO,aAAa;AAAA,IACxB,SAAS;AAAA,IACT,KAAK;AAAA,IACL,cAAc;AAAA,IACd,MAAM,CAAC,QAAQ,MAAM;AAAA,EACvB,CAAC;AACH;AAEA,eAAsB,oBACpB,QACA,eACA,YACkB;AAClB,SAAO,OAAO,aAAa;AAAA,IACzB,SAAS;AAAA,IACT,KAAK;AAAA,IACL,cAAc;AAAA,IACd,MAAM,CAAC,UAAU;AAAA,EACnB,CAAC;AACH;","names":["getIssuer"]}