mirror of
https://github.com/luxfi/explore.git
synced 2026-09-24 00:28:18 +00:00
64 lines
2.4 KiB
TypeScript
64 lines
2.4 KiB
TypeScript
import type { ApiResource } from '../../types';
|
|
import type {
|
|
SmartContract,
|
|
SmartContractSecurityAudits,
|
|
SmartContractVerificationConfigRaw,
|
|
} from 'types/api/contract';
|
|
import type { VerifiedContractsResponse, VerifiedContractsCounters, VerifiedContractsFilters } from 'types/api/contracts';
|
|
import type { VerifiedContractsSorting } from 'types/api/verifiedContracts';
|
|
|
|
export const GENERAL_API_CONTRACT_RESOURCES = {
|
|
contract: {
|
|
path: '/smart-contracts/:hash',
|
|
pathParams: [ 'hash' as const ],
|
|
},
|
|
contract_verification_config: {
|
|
path: '/smart-contracts/verification/config',
|
|
},
|
|
contract_verification_via: {
|
|
path: '/smart-contracts/:hash/verification/via/:method',
|
|
pathParams: [ 'hash' as const, 'method' as const ],
|
|
},
|
|
contract_solidity_scan_report: {
|
|
path: '/proxy/3rdparty/solidityscan/smart-contracts/:hash/report',
|
|
pathParams: [ 'hash' as const ],
|
|
},
|
|
contract_security_audits: {
|
|
path: '/smart-contracts/:hash/audit-reports',
|
|
pathParams: [ 'hash' as const ],
|
|
},
|
|
verified_contracts: {
|
|
path: '/smart-contracts',
|
|
filterFields: [ 'q' as const, 'filter' as const ],
|
|
paginated: true,
|
|
},
|
|
verified_contracts_counters: {
|
|
path: '/smart-contracts/counters',
|
|
},
|
|
} satisfies Record<string, ApiResource>;
|
|
|
|
export type GeneralApiContractResourceName = `general:${ keyof typeof GENERAL_API_CONTRACT_RESOURCES }`;
|
|
|
|
/* eslint-disable @stylistic/indent */
|
|
export type GeneralApiContractResourcePayload<R extends GeneralApiContractResourceName> =
|
|
R extends 'general:contract' ? SmartContract :
|
|
R extends 'general:contract_solidity_scan_report' ? unknown :
|
|
R extends 'general:verified_contracts' ? VerifiedContractsResponse :
|
|
R extends 'general:verified_contracts_counters' ? VerifiedContractsCounters :
|
|
R extends 'general:contract_verification_config' ? SmartContractVerificationConfigRaw :
|
|
R extends 'general:contract_security_audits' ? SmartContractSecurityAudits :
|
|
never;
|
|
/* eslint-enable @stylistic/indent */
|
|
|
|
/* eslint-disable @stylistic/indent */
|
|
export type GeneralApiContractPaginationFilters<R extends GeneralApiContractResourceName> =
|
|
R extends 'general:verified_contracts' ? VerifiedContractsFilters :
|
|
never;
|
|
/* eslint-enable @stylistic/indent */
|
|
|
|
/* eslint-disable @stylistic/indent */
|
|
export type GeneralApiContractPaginationSorting<R extends GeneralApiContractResourceName> =
|
|
R extends 'general:verified_contracts' ? VerifiedContractsSorting :
|
|
never;
|
|
/* eslint-enable @stylistic/indent */
|