Signatures (EIP-712)
isSignatureDeadlineExpired
isSignatureDeadlineExpired(deadline: bigint, safetySeconds: number = 5): boolean
Checks whether a signature deadline has expired. Includes a safety buffer to avoid submitting signatures that might expire during transaction confirmation.
Parameters
deadline: bigint– The deadline timestamp to checksafetySeconds: number– Safety buffer in seconds (default: 5)
Returns
boolean – true if deadline has passed (signature invalid), false if still valid
import { createPalindromeSDK } from '@/lib/createSDK';
const { sdk } = await connectAndInitSDK();
// Create a deadline
const deadline = await sdk.createSignatureDeadline(10); // 10 minutes
// Check immediately — should be valid
console.log(sdk.isSignatureDeadlineExpired(deadline)); // false
// Wait... then check again
setTimeout(() => {
console.log(sdk.isSignatureDeadlineExpired(deadline)); // true (after 10+ min)
}, 11 * 60 * 1000);
Safety Buffer
The safetySeconds parameter adds a buffer to prevent edge cases:
// Default: 5 second buffer
sdk.isSignatureDeadlineExpired(deadline); // Expires 5s before actual deadline
// Custom: 30 second buffer for slow networks
sdk.isSignatureDeadlineExpired(deadline, 30);
// No buffer (risky!)
sdk.isSignatureDeadlineExpired(deadline, 0);
Usage Pattern
async function submitWithRetry(escrowId: bigint, deadline: bigint, signature: Hex) {
// Always check before submitting
if (sdk.isSignatureDeadlineExpired(deadline)) {
throw new Error("Signature expired — please sign again");
}
try {
return await sdk.confirmDeliverySigned(...);
} catch (error) {
// If failed due to deadline, inform user
if (sdk.isSignatureDeadlineExpired(deadline)) {
throw new Error("Signature expired during submission");
}
throw error;
}
}
UI Example
function SignatureStatus({ deadline }: { deadline: bigint }) {
const [expired, setExpired] = useState(false);
useEffect(() => {
const check = () => setExpired(sdk.isSignatureDeadlineExpired(deadline));
check();
const interval = setInterval(check, 1000);
return () => clearInterval(interval);
}, [deadline]);
return expired ? (
<span className="text-red-500">Signature expired</span>
) : (
<span className="text-green-500">Signature valid</span>
);
}
See also → createSignatureDeadline() · signConfirmDelivery()
